日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell初识

發(fā)布時(shí)間:2024/5/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell初识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ?shell交互式解釋和執(zhí)行用戶輸入的命令或者自動(dòng)地解釋和執(zhí)行預(yù)先設(shè)定好的一連串的命令, 也就是一個(gè)可以將用戶發(fā)出的操作命令解釋給操作系統(tǒng)的一個(gè)應(yīng)用程序

?一,shell常用的通配符?

通配符含義實(shí)例
*匹配 0 或多個(gè)字符a*b,a與b之間可以有任意長度的任意字符, 也可以一個(gè)也沒有, 如 aabcb, axyzb, a012b, ab
?匹配任意單個(gè)字符a?b,a與b之間有且只有一個(gè)字符, 可以是任意字符, 如 aab, abb, acb, a0b
[list]匹配 list 中的任意單個(gè)字符a[xyz]b,a與b之間必須也只能有一個(gè)字符, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。
[!list]匹配除 list 中的任意單一字符a[!0-9]b,a與b之間必須也只能有一個(gè)字符, 但不能是阿拉伯?dāng)?shù)字, 如 axb, aab, a-b。
[c1-c2]匹配 c1-c2 中的任意單一字符a[0-9]b,匹配0與9之間其中一個(gè)字符,如 a0b, a1b... a9b
{s1,s2,...}匹配 s1 或 s2 (或更多)中的一個(gè)字符串a{abc,xyz,123}b,a與b之間只能是abc或xyz或123這三個(gè)字符串之一

二.shell腳本初識(shí)

?#! 為shell與python 腳本語言的通用開頭 英文念做? she bang?

?示例1.編寫一個(gè)ping腳本,可以提示用戶輸入

#!/bin/bash read -p "please input a ip" ip ping -c1 $ip &>/dev/nullif [ $ip -eq 0 ] ;thenecho "$ip okkkkkkkkkkkkkkkkkk" elseecho "$ip fialeddddddddddd" fi

如上圖shell中的變量賦值方式有三種

1.ip=xxx.xxx.xxx

2.read ip

3.$1?

?第一種是最簡單的賦值方式,但是沒有第二種使用read關(guān)鍵字讀入變量更為方便

這里順便介紹一個(gè)read關(guān)鍵字使用方式

?第三種是shell的一種默認(rèn)輸入 $ 1,系統(tǒng)自動(dòng)讀入執(zhí)行shell后的第一個(gè)參數(shù)

接下來看看變量的幾種類型?


shell腳本中的變量?

1.常用的系統(tǒng)變量有:
$HOME , $PWD , $SHELL , $USER

$HOME :當(dāng)前家目錄路徑
$PWD: 當(dāng)前路徑
$SHELL: 默認(rèn)Shell解析器路徑
$USER: 當(dāng)前用戶

2.自定義變量

1.基本語法
(1).定義變量: 變量=值? ? ? 引用變量? ?$變量名?或者 ${ 變量名}

(2).撤銷變量:unset 變量

(3).聲明靜態(tài)變量:readonly 變量=值 (注意:不能unset)

(4).可把環(huán)境變量提升為全局環(huán)境變量,可供其他shell程序使用
語法: export 變量名? ?
2.變量定義規(guī)則

(1)變量名稱可以由字母,數(shù)字和下劃線組成,但不能以數(shù)字開頭,環(huán)境變量名建議大寫。
(2)等號(hào)兩側(cè)不能有空格
(3)在bash中,變量默認(rèn)類型都是字符串類型,無法直接進(jìn)行數(shù)值運(yùn)算
(4)變量值如果有空格,需要使用雙引號(hào)或單引號(hào)括起來

?一些特殊的符號(hào)變量

$n

$n
(功能描述: n為數(shù)字,$0代表該腳本名稱,$1~$9代表第一個(gè)到第九個(gè)參數(shù),十以上的 參數(shù)需要用大括號(hào)包含,如 ${10})

$#

$#
功能描述:獲取所欲輸入?yún)?shù)個(gè)數(shù),常用于循環(huán)。

$*和 $@

$*
功能描述:這個(gè)參數(shù)代表命令行中的所有參數(shù), $* 把所有的參數(shù)看成一個(gè)整體
$@
功能描述:這個(gè)參數(shù)也代表命令行中的所有的參數(shù),不過 $@把每個(gè)參數(shù)區(qū)分對(duì)待


變量的運(yùn)算符

1.? $[運(yùn)算式]? 或者?$( (運(yùn)算獅) )

lt

變量內(nèi)容的刪除與替換

?符號(hào)# 從前向后刪除??

#為最短匹配

##為貪婪匹配?

%為從后向前刪除?

??

索引與切片?

?:從第幾個(gè)開始 :取幾個(gè)

替換?

/ /為貪婪匹配

${變量名-新的變量值}

變量沒有被賦值(包括空值):都會(huì)使用“新的變量名”替代

變量有被賦值:不會(huì)被替代?


??條件測試

[ 條件?] ( 條件?前后都要加空格)
注意: 條件非空即為true ,[ ]返回false。

?常用判斷條件:

兩個(gè)整數(shù)之間

-lt 小于 (less than)
-le 小于等于 (less equal)
-eq 等于 (equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(not equal)

?文件權(quán)限測試

-r 有讀的權(quán)限(read)
-w 有寫的權(quán)限(write)
-x 有執(zhí)行的權(quán)限(execute)

?按文件類型進(jìn)行判斷

-f 文件存在并且是一個(gè)常規(guī)的文件(file)
-e 文件存在(existence)
-d 文件存在并且是一個(gè)目錄文件(directory)

字符串比較

提示 使用雙引號(hào)

[ "$變量" = "字符串"]? ?是否相等

[ "$變量" = "字符串"]? ?是否相等

[ ?-z "字符串"]? ?長度是否是零

[ ?-n?"字符串"]? ?長度是否不是零? ? ?變量為空或者未定義都為0

條件比較

?[ "條件" -a?"條件"]? ?是否都真

?[ "條件" -o?"條件"]? ?是否一個(gè)是真


模式匹配? ? case

1.基本語法

case $變量名 in
;;
“值1”)
如果變量的值等于1,則執(zhí)行程序1
;;
“值2”)
如果變量的值等于2,則執(zhí)行程序2
…省略其他分支…
;;
*)
如果變量的值都不是以上的值,則執(zhí)行此程序
;;
esac

2.實(shí)例(需求輸入1 打印a,輸入2打印b,都不符合輸出c)
內(nèi)容:

#!/bin/bash?
? ?case $1 in
1)
? ? ? echo "a"
;;
2)
? ? ? echo "b"
;;
*)
? ? ? echo "c"
;;
esac ? ? ? ? ??

條件測試 if

基本語法:

if [ 條件判斷式 ];then
程序

或者

if [ 條件判斷式 ]
then
程序

elif相當(dāng)于 ( else if )

[[ ]] 兩個(gè)括號(hào)代表支持正則表達(dá)式

注意:

(1).方括號(hào)前后都要有空格
(2).if后面要有空格

for

1.基本語法1

for (( ?初始值;循環(huán)控制條件;變量變化 ))
? ?do
? ? ? 程序
? ?done

?實(shí)現(xiàn)一個(gè)計(jì)算1+到100腳本

1 #!/bin/bash2 # add3 4 s=0;5 for ((i=1 ;i<=100;i++)) 6 do7 s=$[i+s]8 done9 echo $s

for基本語法2

for 變量 in 值1 值2 值3
? ? do
? ? ? 程序
? ? done

#!/bin/bash for i in $* doecho "I am $i" done

?

while

基本語法:?while[ 條件判斷式 ]
? do?
? ? ? 程序
? done

?從1加到100

#!/bin/bashs=0;i=1;while [ $i -le 100 ]dos=$[ $s + $i ];i=$[ $i +1 ]doneecho $s

read讀取控制臺(tái)輸入

1.read基本語法

? ? ? ? -p 指定讀取值的提示符

? ? ? ? -t 指定讀取值等待時(shí)間

指定在三秒內(nèi)輸入?

read -t 3 -p"3s" i s=0;while [ $i -le 100 ]dos=$[ $s + $i ];i=$[ $i +1 ]doneecho $s

basename會(huì)刪除前綴

?dirname與之相反

?


shell(工具)

1.cut

?在文件中每一行剪切字節(jié)字符字段將這些輸出

用法 cut? [參數(shù)] filename

默認(rèn)參數(shù)是指標(biāo)副

不會(huì)改變?cè)募?/p>

選項(xiàng)參數(shù)功能
-f列號(hào),提取第幾列
-d分割符,按照指定分隔符分割列

文本

1 2 3 4

5 6 7 8

9 10 11 12?

切割第一列?

?切割第一二列?

?切除第二列后的所以內(nèi)容

?

sed

是一個(gè)流編輯器,它一次處理一行內(nèi)容。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為”模式空間“,接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾 不會(huì)改變?cè)募?/p>

命令功能描述
a新增,a的后面可以接字串,在下一行出現(xiàn)
d刪除
s查找并替換

?在第二行后加入aaa

?將包含5的行刪除

將wo替換成ni

awk

一個(gè)強(qiáng)大的文本分析工具,把文件逐行讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分在進(jìn)行分析處理?

2.選項(xiàng)參數(shù)說明

選項(xiàng)參數(shù)功能
-F指定輸入文件拆分符
-v賦值一個(gè)用戶定義變量

使用用法類似于cut?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的shell初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。