首頁 >運維 >linux運維 >shell基本語法的介紹與使用

shell基本語法的介紹與使用

PHP中文网
PHP中文网原創
2017-06-20 11:24:481976瀏覽

一、變數

1.變數的命名規則:以字母或底線開頭,後面跟數字,字母或底線,最好不要隨便命名,要做到看見變數名能猜出其意義

2.變數賦值: x=100

      echo $x

 刪除變數:unset x










##”

#[root@bogon ~]# egon_salary=20000

[root@bogon ~]# echo ${egon_salary}yuan

20000yuan

4.bash中不必宣告資料類型,預設都是字元型

二、運算子


1.算術運算子:+ - * / %

[root@bogon ~]# echo $[5%2 ]

1

2.賦值運算子:=,+=,-=,*=,/=,%=

[root@bogon ~]# x=10

[root@bogon ~]# ((x+=1))

[root@bogon ~]# echo $x

11

3.關係運算子:<,>, !=,==,>=,<=,||,&&

關係運算子常與(( ))連用,[]可以達到同樣的結果,但(( ))不能判斷一個檔案的類型,判斷檔案類型必須用到[],[]又和test指令效果一樣

用$?查看指令執行結果,結果為0代表真,非0代表假

[root@bogon ~]# x=10

[root@bogon ~]# ((x>=8))[root@bogon ~]# echo $?

0

##4.shell裡的計算器

之前說過用$[]可以進行一些簡單的運算,但是如果涉及到小數的運算,就需要用到shell裡面的計算器了

首先要安裝軟體,yum install -y bc

[root@bogon ~]# res=$(echo 'scale=2;1/3' |bc -l |cut -d '.' -f2)

[root@bogon ~]# echo ${res}%

33%

5.test 指令測試

  test 

     -n str 字串長度不為零

     -z  str 字串長度為零

#     -b 檔案存在且為塊

#     -b 檔案存在且為區塊

#     -b 檔案存在且為區塊

#    目錄檔案

     -e 檔案存在

     -f 檔案存在且為普通檔案

     -h 檔案存在且為連結檔案

     -h 檔案存在且為連結檔案

    #     -s 文件存在且大於零位元組

   檔案之間的比較

    file1 -nt file2  file1創建時間比file2早 

   整數之間的比較
    int1 -ne int2 int1和int2不相等
    int1 -eq 2121 -eq 2 1(int#int#int#int# #    int1 -lt int2  int1小於int2

    int1 -le int2 int1小於等於int2

    int1 - 小於等於int2

   》   字串之間比較

    str1 = str2 str1和str2相等    str1 ! =str2 str1與str2不相等

  表達式之間的比較    expression1 -a expression2  表達式1與表達式2都為真

 ex  。式1或表達式2為真
6.測試舉例

  數字比較測試:    

[root@bogon ~]# [[ 2 > 1 ]][root@bogon ~]# echo $?0
[root@bogon ~]# ((20>10))[root@bogon ~]# echo $?0
[root@bogon ~]# ((20<10))[root@bogon ~]# echo $?1
##  字串測試

[root@bogon ~]# [ "abc" = "abc" ][root@bogon ~]# echo $?0
[root@bogon ~]# [[ "abc" = "abc" ]][root@bogon ~]# echo $?0
[root@bogon ~]# (("abc" = "abc"))[root@bogon ~]# echo $?1

  字串測試

[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0
[root@bogon ~]# [[ a = a && 1 < 2 ]][root@bogon ~]# echo $?0

[root@bogon ~]# (( a = a || 1 > 2 ))[root@bogon ~]# echo $?1[root@bogon ~]# [[ a = a || 1 > 2 ]][root@bogon ~]# echo $?0

input your name : zhangcan
input password : 123login successful
[root@bogon ~]# ./usertest.sh input your name : hha
input password : hag
user or password error
單純比較數字,用(( ))

除了單純數字之外的比較,用[[ ]]

三、流程控制

1.if 分公司

  1)驗證使用者帳號密碼:

#! /bin/bashuser='zhangcan'password='123'read -p 'input your name : ' name
read -p 'input password : ' codeif [ $name = $user -a $code = $password ];then
        echo 'login successful'elseecho 'user or password error'fi~
#!/bin/bash #根据用户输入的成绩,判断所属档次,并输出给用户read -p 'input your score : ' scoreif  [ $score -ge 90 ];then
    echo '优秀'elif [ $score -ge 70 -a $score -lt 90 ];then
    echo '良好'elif [ $score -ge 60 -a $score -lt 70 ];then
    echo '及格'elif [ $score -lt 60 ];then
    echo '较差'fi

  2)判斷成績檔次

#!/bin/bashwhile :
do
    read -p 'input your file : ' fileif [ -z $file ];thencontinueelsebreakfi
doneif [ -f $file ];then
    echo "$file is regular file"elif [ -b $file ];then
    echo "$file is block file"elif [ -d $file ];then
    echo "$file is directory file"elseecho "$file type unkonw"fi
2.while循環

  while (條件)
  do 

  指令######  done######範例:判斷使用者輸入的檔案是什麼類型######
#!/bin/bashfor i in {1..50}
do
    ping -c1 192.168.16.$i &> /dev/null  # -c1表示ping一次if [ $? -ne 0 ];then
        echo "192.168.16.$i successful"echo "192.168.16.$i" >> ~/ipavailable.txt
    fi
done~
## ####3.for迴圈######  for i in {1..10}      #in後面不一定是數字,只要是有回傳結果的指令都可以######  do### ###  echo $i######  done######範例1:寫一個腳本,測試子網路內可以使用的IP######
#!/bin/bashdir='/dev'for i in $(ls $dir)
doif [ -h $dir/$i ];then
        ((link+=1))elif [ -f $dir/$i ];then
        (( rfile+=1))elif [ -d $dir/$i ];then
        ((directory+=1))elif [ -b $dir/$i ];then
        (( block+=1 ))else(( typeunknow+=1))
    fi
done
echo 'block' $block
echo 'regular file' $rfile
echo 'directory' $directory
echo 'link' $link
echo 'unknow' $typeunknow
######範例2:統計/dev下每個檔案類型的數量######
#!/bin/bashfor ((i=1;i<=9;i++))
dofor ((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[$i*$j]"done
    echo
done
######4.嵌套循環######範例1:輸出一個九九乘法表######
#!/bin/bashuser=&#39;zhangcan&#39;password=&#39;123&#39;tag=truewhile $tag
do
    read -p &#39;input your name : &#39; name
    read -p &#39;input your password : &#39; codeif [[ $name = $user ]] && [[ $code = $password ]];then
        echo &#39;login successful&#39;while $tag
        do
            read -p &#39;>>: ' cmdif [[ $cmd = 'quit' ]];then
                tag=falseelse$cmd
            fi
        done
    fi
done
######示例2:驗證用戶登陸賬號密碼,登陸成功後可以執行命令,當輸入quit時退出######rrreee######              ###

以上是shell基本語法的介紹與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:Linux系統基礎篇(一)下一篇:Linux系統基礎篇(一)

相關文章

看更多