標籤:
變數說明:
$$
Shell本身的PID(ProcessID)
$!
Shell最後啟動並執行後台Process的PID
$?
最後啟動並執行命令的結束代碼(傳回值)
$-
使用Set命令設定的Flag一覽
$*
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
[email protected]
所有參數列表。如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#
添加到Shell的參數個數
$0
Shell本身的檔案名稱
$1~$n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。
樣本:
我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義
# touch variable
# vi variable
指令碼內容如下:
#!/bin/sh
echo "args number:$#"
echo "script name:$0"
echo "first arg:$1"
echo "second arg:$2"
echo "args:[email protected]"
儲存退出
賦予指令碼執行許可權
# chmod +x variable
執行指令碼
# ./variable aa bb
args number:2
script name:./variable
first arg: aa
second arg: bb
args:aa bb
通過顯示結果可以看到:
$# 是傳給指令碼的參數個數
$0 是指令碼本身的名字
$1 是傳遞給該shell指令碼的第一個參數
$2 是傳遞給該shell指令碼的第二個參數
[email protected] 是傳給指令碼的所有參數的列表
$()在bash中叫做 命令替換,回調用一個subshell。通俗點講,就是被它括起來的命令部分將優先執行。
$(command)命令替換,和`command`是同樣的作用
#Examples:
# basename /usr/bin/sort Output "sort".
# basename include/stdio.h .h Output "stdio".
#Examples:
# dirname /usr/bin/sort Output "/usr/bin".
# dirname stdio.h Output ".".
NAME=$(basename $VCF .vcf.gz)
DIR=$(dirname $VCF)
shell中$0,$?,$!等的特殊用法