Shell指令碼中$的用法
阿新 • • 發佈:2019-01-09
$0: 指令碼名稱,相對路徑還是絕對路徑要看呼叫的方式。如果是在父目錄中,./dollarTest.sh呼叫,那麼$0就是./dollarTest.sh;如果是全路徑呼叫,如"/root/test/dollarTest.sh",那麼$0就是"/root/test/dollarTest.sh"。
$n:呼叫的第n個引數。ps:如果n > 9,那麼數字需要用括號括起來,如${10},否則shell直譯器會認為是$1加上1這個數字。
$*:指令碼中的所有引數。
[email protected]:同$*。
$#:指令碼的引數個數。 $$:改shell指令碼執行時的程序號。 $?:上一條命令的輸出結果,如果上條命令exit的返回值。 $!:上一條後臺程序執行的pid號。 !$:上一條命令的最後一個字串。 $-:使用set命令設定的flag。 以執行指令碼dollarTest.sh為例,指令碼程式碼:
執行命令及引數:./dollarTest.sh 1 2 3 4 5 6 7 8 9 10 21 22 23 24 執行結果:
$#:指令碼的引數個數。 $$:改shell指令碼執行時的程序號。 $?:上一條命令的輸出結果,如果上條命令exit的返回值。 $!:上一條後臺程序執行的pid號。 !$:上一條命令的最後一個字串。 $-:使用set命令設定的flag。 以執行指令碼dollarTest.sh為例,指令碼程式碼:
#!/bin/bash
echo '$0 is ' $0
echo '$1 is ' $1
echo '$11 is ' ${11}
echo '$# is ' $#
echo '$* is ' $*
echo ' [email protected] is ' [email protected]
echo '$$ is ' $$
sh test.sh # this shell script will exit with 11
echo '$? is ' $?
echo '$# is ' $#
nohup ping www.baidu.com &
echo '$! is ' $!
echo $-
因有特殊字元,顯示不全,故用圖片顯示shell原始碼;
執行命令及引數:./dollarTest.sh 1 2 3 4 5 6 7 8 9 10 21 22 23 24 執行結果: