學習目標:
學習shell腳本變量用法:用戶自定義變量,環境變量,命令行參數(位置變量),預定義變量
總結:
執行shell腳本可用。./腳本名;source 腳本名;sh 腳本名。後兩種不必用加x權限。
shell腳本註釋爲#
變量賦值前後不能有空格
在windows下編輯shell腳本行尾有回車換行,運行腳本會報invalid \r
命令行傳入參數以空格區分
正文
1- shell腳本初識
shell腳本就是把shell命令寫成一個可執行文件。
示例:
a- 新建一個shell.sh文件,用vim打開並在裏面輸入ls,保存。
b- 賦予這個文件可執行權限x
c- 在shell環境下執行:./shell.sh,即開始運行這個腳本
注意:用vim編輯,因爲window下編輯,每行最後有換行符,執行會報錯:invalid ‘\r’
#shell.sh
ls
2- 用戶自定義變量
a- 用戶自定義變量和C語言裏的變量一樣,但是變量=前後不能有空格!
b- 變量沒有數據類型,全部被當作字符
c- 如果想打印變量,使用命令:echo $變量名
d- 變量間賦值,和C語言一樣,但是注意使用$符號:被賦值變量=$賦值變量
e- 清除變量賦值,命令:unset 變量名
示例:
/*a-c */
count=5
echo $count //打印5; 若echo count只會打印count
/*d- */
count=5
tmp=$count
echo "count=$count" //打印count=5
echo "tmp=$tmp" //打印tmp=5
/*e- */
unset count //刪除變量賦值
echo "count=$count" //此時打印count=
3- 命令行參數(位置變量)
命令行參數:
$0 | 文件名 |
$1到$9 | 命令行參數,就是執行腳本文件後面的參數,分別對應$1-$9 |
$# | 命令行參數個數,就是執行腳本文件後面的參數個數 |
$@ | 所有命令行參數個數,就是執行腳本文件後面的參數,和$*作用一樣 |
$* | 所有命令行參數個數,就是執行腳本文件後面的參數,和$@作用一樣 |
$$ | 進程PID |
注意還有個$?用於打印上次執行結果,該參數結合第2篇博客理解。
上面的命令行參數理解結合示例:
先上效果如下。
需要說明的的是:
腳本文件後面跟的參數個數以空格爲區分的,多個空格當成一個空格。
命令行傳入參數大於9個,如果想打印,必須加{},echo ${10}
root@ubuntu:/home/shell# ./shell.sh hello world , welcom to beijing of chain . my friends !
$0_name:./shell.sh
$#_num:12
$*_all:hello world , welcom to beijing of chain . my friends !
$@ all:hello world , welcom to beijing of chain . my friends !
$$ PID:17988
$? : 0
$1: hello
$2: world
$3: ,
$4: welcom
$5: to
$6: beijing
$7: of
$8: chain
$9: .
$10: my
$11: friends
$12: !
附腳本文件:
#shell.sh
echo "\$0_name:$0"
echo "\$#_num:$#"
echo "\$*_all:$*"
echo "\$@ all:$@"
echo "\$$ PID:$$"
echo "\$? : $?"
echo "\$1: $1"
echo "\$2: $2"
echo "\$3: $3"
echo "\$4: $4"
echo "\$5: $5"
echo "\$6: $6"
echo "\$7: $7"
echo "\$8: $8"
echo "\$9: $9"
echo "\$10: ${10}"
echo "\$11: ${11}"
echo "\$12: ${12}"
4- 環境變量
PATH、PWD、HOME等,命令行執行export可看到當前環境變量
echo $PWD
該部分內容暫不做過多理解。