shell基礎(chǔ)

1,bash

自定義變量

定義:變量名稱=值
    變量名稱:只能由字母,數(shù)字,下劃線組成,不能以數(shù)字開頭
    = :       賦值符號  前后不能有空白        
    值:         所有字符串和數(shù)字都可以,但是你應(yīng)該給字符串加引號
    
引用變量:$變量名 或 ${變量名}
    [root@server shell]# a=8
    [root@server shell]# echo $a
    [root@server shell]# echo ${a}
     8
     
查看變量:       echo $變量名  set(所有變量:包括自定義變量和環(huán)境變量)
    #name=tingting
    #set | grep tingting        

取消變量:       unset 變量名
    #unset name

作用范圍:       僅在當(dāng)前shell中有效

變量替換之匹配截取:

[root@bogon ~]# a=abcdefg    //定義變量
[root@bogon ~]# echo ${a:5}     //輸出變量內(nèi)容第5字符之后內(nèi)容
fg
[root@bogon ~]# echo ${a:2:4}   //輸出變量"a" (第二位之后開始截取,截取四位)
cdef

bash測試

數(shù)字
-eq 等于               -ne 不等于
-ge 大于等于           -gt 大于
-le  小于等于          -lt  小于
例:
[root@bogon ~]# cat bash.sh 
#!/bin/bash
if [ 5 -eq 3 ];then
    echo 你是對的
else
    echo 你是錯的
fi
[root@bogon ~]# sh bash.sh 
你是錯的
文件
-f 存在且是正規(guī)文件
-d 存在且是目錄
-h 存在且是符號鏈接
-b 塊設(shè)備
-c 字符設(shè)備
-S socket
-p pipe

bash判斷

條件判斷

if

if代碼返回0表示真,非0為假

語法:
if [ *判斷* ]; then
  *動作*
else
  *動作*
fi
##elif:多條件判斷

case

case 語句是 shell 中流控制的第二種方式,語法如下:
case word in
     pattern1)
          list1
          ;;
     pattern2)
          list2
          ;;
     ... ...
     patternN)
          listN
         ;;
    *)
         list*
         ;;
esac
例:
#!/bin/bash
a=8
case $a in
5)
   echo "這是5";echo "隨便寫";;
6)
   echo "這是6";;
*)
   echo 什么都不是;;
esac

bash循環(huán)

循環(huán)

for 循環(huán):

for...do...done
while...do...done

例
練習(xí)編寫腳本:批量生成賬戶并給定賬戶密碼
#!/bin/bash
for i in {1..10}
do
        useradd user$i
        if [ $? -eq 0 ];then
                echo 添加用戶 user$i 成功!
        else
                echo 添加用戶 user$i 失敗!
                exit 6
        fi

        echo 1 | passwd  --stdin user$i

        if [ $? -eq 0 ];then
                true
        else
                exit 5
        fi
done

while循環(huán)

while cmd
do
    list
done

例:
[root@bogon ~]# cat test.sh  //循環(huán)輸出0-9
#!/bin/bash
x=0
while [ $x -lt 10 ]
do
      echo $x
      x=`expr $x + 1`
done
[root@bogon ~]# sh test.sh 
0
1
2
3
4
5
6
7
8
9


注:循環(huán)控制:
break
直接跳出大循環(huán)
continue
跳出當(dāng)前這一次循環(huán)

函數(shù)

函數(shù)
定義函數(shù)
調(diào)用函數(shù)
取消函數(shù)
函數(shù)傳參

命名空間 
    local
    
    #!/bin/bash
    a=8
    test(){
            local a
            echo $a
            a=9
            echo $a
    }
    echo $a
    test
    echo $a
    
返回值 
    return value
    value不能超過255
myfunc()        #函數(shù)定義
{
echo "This is my first shell function"
}

myfunc          #函數(shù)調(diào)用

unset myfunc    #取消函數(shù)
例:
readPass() {
PASS=""
echo -n "Entry Password: " //交互
stty -echo
read PASS
stty echo
echo
}
readPass
echo Password is $PASS
image.png
使用$1,$2傳參
#!/bin/bash
test(){
        echo $1 $2
}
test 5  6
使用$*傳參
[root@wing shell]# cat a.sh
#!/bin/bash
a=(1 2 3 4 5)
hello(){
    for i in $*   #因?yàn)槭且粋€數(shù)組,不知道有多少個參數(shù),所以使用$*獲取所有參數(shù)
    do
        echo $[$i*2]
    done
}
hello ${a[*]}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容