我正在編寫一個應該接收3個或更多參數的shell腳本(tcsh)。前3個將被傳遞給一個程序,其餘的應該被傳遞給另一個程序。總而言之腳本應該是這個樣子:在tcshell中傳遞部分參數
./first_program $1 $2 $3
./second program [fourth or more]
的問題是,我不知道該怎麼辦了後者 - 傳遞是第三之後的所有參數。
我正在編寫一個應該接收3個或更多參數的shell腳本(tcsh)。前3個將被傳遞給一個程序,其餘的應該被傳遞給另一個程序。總而言之腳本應該是這個樣子:在tcshell中傳遞部分參數
./first_program $1 $2 $3
./second program [fourth or more]
的問題是,我不知道該怎麼辦了後者 - 傳遞是第三之後的所有參數。
您可以使用shift
如下:
./first_program $1 $2 $3
shift # shift 3 times to remove the first 3 parameters.
shift
shift
./second program $*
$*
包含剩餘參數。
在執行shift
之前,您還必須執行錯誤檢查,方法是檢查$#argv
並確保它不爲零。或者,您可以在腳本的明星處檢查$#argv
的值,並確保它至少爲3
。
我向你的shift
命令:
shift
[變量]
沒有參數,丟棄argv[1]
和argv
成員轉移到左側。
例子:
$ cat /tmp/tcsh.sh
#!/bin/tcsh
echo "$1" "$2" "$3"
shift
shift
shift
echo "$*"
$ /tmp/tcsh.sh 1 2 3 4 5 6
1 2 3
4 5 6