shell腳本編程部分技巧總結

shell腳本編程部分技巧總結

今天看腳本,發現有好多不懂的地方,於是查找資料,總結了一下。
1、
${var:-word} //如果var定義了,就使用var,如果沒有定義,則使用後面word的值
如:下面的腳本,如果輸入,則顯示輸入的信息.如果不輸入直接回車,則顯示abc、但是這時候INT的值仍然是空的。
#!/bin/bash

read -p "please input the word: " INT
A=${INT:-abc}
echo $INT
echo $A

此時輸入hello則顯示
hello
hello
此時如果直接點回車
  //空
abc


2、
${var:+word} //如果var定義了,就使用word這個值,如果沒有定義,則顯示爲空

#!/bin/bash

read -p "please input the word: " INT
A=${INT:+abc}
echo $INT
echo $A

此時如果輸入hello
hello
abc
此時如果不輸入直接回車
 //空
 //空


3、
${var:=word} //這時候如果輸入,則顯示輸入的信息;如果不輸入則顯示abc,這時候INT的值被賦值爲abc。

#!/bin/bash

read -p "please input the word: " INT
A=${INT:=abc}
echo $INT
echo $A

如果輸入hello則輸出結果爲
hello
hello
如果不輸入直接回車
abc //此時INT被賦值爲abc
abc


4、
${INT:?error} //此時如果輸入則顯示輸入信息,如果不輸入,則顯示錯誤信息並退出程序。

#!/bin/bash

read -p "please input the word: " INT
A=${INT:?error}
echo $INT
echo $A

如果輸入hello則顯示
hello
hello
如果不輸入直接回車
則輸出錯誤信息。並推出


5、
函數的變量類型,局部和全局變量。

#!/bin/bash

A=3  //此時定義的A=3是全局變量,在整個腳本中有效
FUN() {
local A=6  //此時定義本地變量A=6只在函數內部有效
A=$[$A+1] 
echo "it's: $A" 
}
FUN
echo $A


輸出結果爲
it's:7
3

declare -i A=2同樣可以說明A是整形且A=2

declare -r B=3變量爲3且不能撤銷

declare -x 聲明一個變量爲環境變量


6、
如,截取字符串
#!/bin/bash

FILENAME='/var/log/maillog'
echo ${FILENAME#*/}
echo ${FILENAME##*/}
echo ${FILENAME%/*}
echo ${FILENAME%%/*}

顯示的結果爲
var/log/maillog
maillog
/var/log
  //空

不多解釋,自己體會一下就會明白

7、
數組
定義數組
declare -a A
初始化數組的幾種方式
1、單獨賦值
names[1]=alice
names[0]=hatter
names[2]=duchess
2、
names=([2]=duchess [1]=alice [0]=hatter) //小括號裏面值與值中間有空格

3、
names=(alice hatter duchess)

4、
names=(alice [5]=hatter duchess) //表示此數組有7個值,第1,2,3,4的值沒有定義


如:這裏寫一個腳本,數組裏面是/var下的文件名,現在我想隨機取才出裏面的幾個文件名。
#!/bin/bash

read -p "please input the number you want to choice: " NOM
declare -i I=0
for FILE in `ls /var`;do
  FILENAME[$I]=$FILE //給數組賦值
  let I++
done
  echo ${FILENAME[*]} //這兩行是顯示數組的值,不同的用法
  echo ${FILENAME[@]}
  echo ${#FILENAME[*]} //下兩行是統計個數
  echo ${#FILENAME[*]}

declare A=1
while [ $A -le $NOM ]; do
  INDEX=$[$RANDOM%20] //這裏的20是對20取模
  let A++
  echo ${FILENAME[$INDEX]}
done

當你執行此腳本的時候就會把所有的文件名輸出2次,並輸出2次文件的個數。並輸出你輸入的數字所隨機選擇的文件的名字。

如,你們班級有26位同學,每次上課要隨機取幾名來提問。
#!/bin/bash

read -p "please input the number you want to choice: " NOM
STUD=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)

declare A=1
while [ $A -le $NOM ]; do
  INDEX=$[$RANDOM%26]
  let A++
  echo ${STUD[$INDEX]}
done

輸入幾就會隨機抽出幾個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章