[英]How to change a command line argument in Bash?
有沒有辦法在 Bash 腳本中更改命令行參數? 例如,像這樣調用 Bash 腳本:
./foo arg1 arg2
有沒有辦法在腳本中更改 arg1 的值? 類似的東西:
$1="chintz"
您必須重置所有參數。 改變例如$3
:
$ set -- "${@:1:2}" "new" "${@:4}"
基本上,您將所有參數設置為其當前值,但要更改的參數除外。 set --
也由 POSIX 7指定。
"${@:1:2}"
表示法擴展為從偏移量1
(即$1
)開始的兩個(因此是表示法中的2
)位置參數。 在這種情況下,它是"$1" "$2"
的簡寫,但是當您想要替換例如"${17}"
時它更有用。
優化易讀性和可維護性,您最好將$1
和$2
分配給更有意義的變量(我不知道, input_filename = $1
和output_filename = $2
或其他),然后覆蓋這些變量之一( input_filename = 'chintz'
) ,保持腳本的輸入不變,以防其他地方需要它。
我知道這是一個舊的,但我發現thkala的答案非常有幫助,所以我使用了這個想法並稍微擴展了它,使我能夠為任何尚未定義的參數添加默認值 - 例如:
# set defaults for the passed arguments (if any) if not defined.
#
arg1=${1:-"default-for-arg-1"}
arg2=${2:-"default-for-arg-2"}
set -- "${arg1}" "${arg2}"
unset arg1 arg2
我希望這對其他人有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.