在Bash中更改命令行参数

有没有办法改变Bash脚本中的命令行参数。 举例来说,一个Bash脚本被调用以下方式:

./foo arg1 arg2 

有没有办法改变脚本中的arg1的值? 说,像

 $1="chintz" 

你必须重置所有参数。 要改变例如$3

 $ set -- "${@:1:2}" "new" "${@:4}" 

编辑:

基本上你把 所有的参数设置为当前的值,除了你想改变的那个。

"${@:1:2}"符号被扩展为从偏移量1 (即$1 )开始的两个(因此是符号中的2 )位置参数。 在这种情况下,它是"$1" "$2"的缩写,但是当您要replace"${17}"时,它更有用。

你最好将$1$2分配给更有意义的variables(我不知道, input_filename = $1output_filename = $2或其他),然后覆盖其中一个variables( input_filename = 'chintz' ),将input留给脚本不变,以防其他地方需要。