簡體   English   中英

如何在 Bash 中更改命令行參數?

[英]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 = $1output_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM