如何复制bash脚本的参数以进行单独处理?

vfc*_*sts 3 bash processing command-line-arguments

我需要修改一个现有的bash脚本,但我希望在函数中封装它所需的更改,而不影响它如何操作'$ @'变量.

我的想法是将参数字符串复制到一个新变量并单独提取所需的参数,但似乎应用'shift'只对$@变量进行操作并永久修改它.

有没有办法$@在普通字符串上模拟变量及其相关函数的处理?

anu*_*ava 6

您可以将其保留$@为BASH数组:

args=("$@")
Run Code Online (Sandbox Code Playgroud)

并且可以随时从BASH数组构造/检索/处理原始参数 "${args[@]}"

  • 使用`set - "$ {args [@]}"`,或者冒险将可选参数误认为`set`可以设置的shell选项之一. (7认同)
  • 确定你可以这样做:`set"$ {args [@]}";`再次重建原始参数列表. (2认同)