我正在使用舊版shell腳本來測試二進制文件中的某些功能(即調用nm
,objdump
,ldd
等;並對結果進行了一些解析) 。 shell腳本目前非常「敏感」,並且很大,所以我想盡量減少我對它做出的更改。將「flags」與bash腳本中的「參數」分開
它目前與參數的數量的檢查開始時,每一個是路徑,即:
if [ "$#" -lt 3 ]
then
echo "Error. Invalid number of arguments."
exit
fi
我想添加一些額外的參數和它們的長形式當量至停用特定功能內部到腳本,同時又不會使上面的測試,即:
-h | --help: Print shell usage and expected arguments.
-x | --xfer: Do some extra copy logic.
-d | --dry: Do a dry-run, and don't actually change any files.
不過,我不希望(即以連字符開頭即參數)的標誌算作參數(即不影響轉讓參數到$1
,$2
和$3
)。例如,下面是目前我的腳本的有效調用:
bash ./test.sh ./ ./out ./logs
我想下面可能的調用,也工作:
bash ./test.sh ./ ./out ./logs --dry
bash ./test.sh --xfer ./ ./out ./logs
bash ./test.sh --help
bash ./test.sh ./ --xfer ./out --dry ./logs
我怎麼會安裝一個腳本來「過濾」以連字符開頭的參數(一個或兩個),並保持相同的分配爲$1
,$2
和$3
?
順便說一句,如果無創性是你的第一個* *的目標,我會接受通過環境,而不是在命令行上,在所有這些選項。 –
@CharlesDuffy好點。 – DevNull