在shell中,內建(builtin)命令cd,格式以下:
cd [-L | -P] [dir]
cd命令用于改變當前工作目錄,新的工作目錄為dir,如果沒有指定dir,則使用shell系統變量“HOME”的值,參數“-L”表示不跟蹤符號鏈接,如果dir是1個符號鏈接的目錄,結果便是dir本身,“-P”表示物理鏈接即跟蹤符號鏈接,如果dir是1個符號鏈接的目錄,結果則是dir指向的實際物理目錄,默許為“-L”。履行成功時退出狀態為0,否則為1。
在shell中,有幾個特殊的目錄,羅列以下:
~ 表示用戶主目錄
/ 表示根目錄
- 表示最近1次的工作目錄即系統變量“OLDPWD”的值
. 表示當前目錄
.. 表示上1層目錄即父目錄
在shell中,內建(builtin)命令getopts,格式以下:
getopts optstring name [args]
getopts命令用于分析shell中的位置參數,比如說履行shell腳本的參數、shell函數的參數。
optstring包括待辨認的選項字符,選項字符不可以是冒號和問號,如果1個選項字符后面隨著冒號,這個選項就要接受1個參數,參數與選項間以空格分隔。
每次履行getopts時,name保存了當前的選項字符,結束時name的值為1個問號,遇到了無效選項時也存儲問號,如果有選項參數,則保存在了系統變量OPTARG中,下1個待處理的參數下標保存在了系統變量OPTIND中,OPTIND在當前shell啟動或shell腳本履行時被設置為1,而后隨著getopts的履行而變化,如果在同1個shell中需要重新履行getopts分析位置參數,就需要手動重置OPTIND的值了。getopts結束時,其退出狀態大于0。
1般情況下,getopts會分析位置參數,但是如果args包括了更多的參數時,getopts就會分析args指定的參數了。
getopts毛病報告有兩種方式,1種是optstring的第1個字符,如果為冒號,則不會報告毛病信息;另外一種是系統變量OPTERR,默許為1,如果設置為0,則不會報告毛病信息。只有當optstring的第1個字符不為冒號,且OPTERR不為0時,才會報告毛病信息。
下面是使用了getopts的1個例子:
$ cat test.sh
while getopts a:b name
do
echo "name: $name"
echo "OPTARG: $OPTARG"
echo "OPTIND: $OPTIND"
echo "----------"
done
echo "name: $name"
echo "OPTARG: $OPTARG"
echo "OPTIND: $OPTIND"
$ bash test.sh -a test -b
name: a
OPTARG: test
OPTIND: 3
----------
name: b
OPTARG:
OPTIND: 4
----------
name: ?
OPTARG:
OPTIND: 4