Bash - 拆分引用的参数

Bash - 拆分引用的参数

我有一个使用两个参数调用的脚本:

./script.sh a b

我目前正在通过 $1 和 $2 阅读它们(例如cd $1)。我的问题是,当使用带引号的参数调用脚本时,输出需要相同:

./script.sh "a b"

如果我理解正确的话,它将两个参数传递给$1变量。有没有一种简单而干净的方法来执行此操作,或者我是否需要检查第一个参数的空格,将其拆分为一个数组,将数组的一部分传递到两个单独的变量中,然后在整个脚本中使用它们?

答案1

最简单的方法是将其放在脚本的顶部:

set -- $*

然后,这将重新扩展参数列表,因此参数中的任何空格都将成为新参数之间的分隔符。

如果您的参数中有非常复杂的引用(例如,引用的引号),则可能会出现一些复杂的行为,但我的猜测是这不太可能发生。

相关内容