在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 = $1
和output_filename = $2
或其他),然后覆盖其中一个variables( input_filename = 'chintz'
),将input留给脚本不变,以防其他地方需要。