在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

所以,为了改变$ 3,我必须改变$ 1和$ 2,是吗?并改变他们到什么? “重置”是什么意思? – Sriram 2011-01-28 11:31:49

+2

当然,要“$ 1”和“$ 2”。 – 2011-01-28 11:33:11

你最好分配$1$2更有意义的变量(我不知道,input_filename = $1output_filename = $2或东西),然后重写这些变量(input_filename = 'chintz')之一,离开输入脚本不变,万一它在别处是需要的。