如何将变量扩展括在引号中?

Der*_*rek 5 shell bash

我的 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"',这确实不是我想要的。

我如何简单地将我的变量用引号括起来?

Mic*_*mer 8

"${*:2}"
Run Code Online (Sandbox Code Playgroud)

代替

"${@:2}"
Run Code Online (Sandbox Code Playgroud)

$@、 和${x[@]}及其变体在引用时扩展为数组中的每个元素一个“单词”$*(和${x[*]})扩展为一个单词,所有元素使用 的第一个字符连接在一起$IFS

如果根本没有引用它们,则两个版本都会进行分词,并在出现任何字符的地方创建多个分词IFS