我的 bash 脚本如下所示:
#!/bin/bash
set -x
./test FLAGS=${@:2}
Run Code Online (Sandbox Code Playgroud)
当我运行执行./script 1 2 3的命令时./test FLAGS=2 3。我要FLAGS="2 3"。
当我将第四行更改为./test FLAGS="${@:2}"没有变化时。
当我将第四行更改为./test FLAGS=\"{@:2}\"I get 时./test 'FLAGS="2' '3"',这确实不是我想要的。
我如何简单地将我的变量用引号括起来?
用
"${*:2}"
Run Code Online (Sandbox Code Playgroud)
代替
"${@:2}"
Run Code Online (Sandbox Code Playgroud)
$@、 和${x[@]}及其变体在引用时扩展为数组中的每个元素一个“单词”。$*(和${x[*]})扩展为一个单词,所有元素使用 的第一个字符连接在一起$IFS。
如果根本没有引用它们,则两个版本都会进行分词,并在出现任何字符的地方创建多个分词IFS。