在Bash中更改命令行参数
问题描述:
是否有方法可以更改Bash脚本中的命令行参数。举例来说,Bash脚本的调用方式如下:在Bash中更改命令行参数
./foo arg1 arg2
有没有办法在脚本中更改arg1的值?说,像
$1="chintz"
答
你必须重置所有参数。要改变例如$3
:
$ set -- "${@:1:2}" "new" "${@:4}"
基本上你set所有参数及其当前值,除了要改变一个(或多个)。
的"${@:1:2}"
notation被扩展到两个(因此2
在符号)的位置参数偏离1
开始(即$1
)。在这种情况下,它是"$1" "$2"
的缩写,但是当您想要替换例如"${17}"
。
答
你最好分配$1
和$2
更有意义的变量(我不知道,input_filename = $1
和output_filename = $2
或东西),然后重写这些变量(input_filename = 'chintz'
)之一,离开输入脚本不变,万一它在别处是需要的。
所以,为了改变$ 3,我必须改变$ 1和$ 2,是吗?并改变他们到什么? “重置”是什么意思? – Sriram 2011-01-28 11:31:49
当然,要“$ 1”和“$ 2”。 – 2011-01-28 11:33:11