Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:将变量内容作为参数插入命令替换-如何正确引用?_Bash_Command Substitution_Variable Substitution - Fatal编程技术网

Bash:将变量内容作为参数插入命令替换-如何正确引用?

Bash:将变量内容作为参数插入命令替换-如何正确引用?,bash,command-substitution,variable-substitution,Bash,Command Substitution,Variable Substitution,我真的没有找到解决这个问题的办法: 假设我有一个有多行的变量,每行最后应该是一个参数 line 1 line two ... 我只在运行时获取此数据,但它应该像这样构建到命令: answer="$(dialog --menu 'Menu title' 0 0 0 'line 1' - 'line two' - ... 3>&1 1>&2 2>&3)" (数据必须用-分隔,但这不是问题。) 我想我真的试过了所有可能的组合,但没有成功。我已经检查

我真的没有找到解决这个问题的办法: 假设我有一个有多行的变量,每行最后应该是一个参数

line   1
line two
...
我只在运行时获取此数据,但它应该像这样构建到命令:

answer="$(dialog --menu 'Menu title' 0 0 0 'line   1' - 'line two' - ... 3>&1 1>&2 2>&3)"
(数据必须用-分隔,但这不是问题。)

我想我真的试过了所有可能的组合,但没有成功。我已经检查过这个网站,但我认为它没有为我的问题提供解决方案:

我应该尝试切换的分词吗

这是我目前的代码:

list=""
while read p; do
    list="$list '$p' - "
done <<< $line_separated_input

answer="$(dialog --menu 'Chosse sth' 0 0 0 $list 3>&1 1>&2 2>&3)"
两者都没有预期的输出。这只有在我执行以下操作时才能实现:

> list=('a  a'   'b    c'); echo "$(echo "${list[@]}")"
a  a b    c

塔达!谢谢大家:)

正如
gniourf\u gniourf
所评论的那样,您可能只需要双引号引用变量,如
。。。完成正如
gniourf\u gniourf
所评论的,您可能只需要像
一样双引号引用您的变量。。。完成将
tr'\n'-'只需使用引号<代码>。。。完成将
tr'\n'-'只需使用引号<代码>。。。完成此操作不是完整的解决方案,请参阅我的编辑。但是谢谢!:-)这不是完整的解决方案,请参阅我的编辑。但是谢谢!:-)
> list=('a  a'   'b    c'); echo "$(echo "${list[@]}")"
a  a b    c
var="/tmp/my directory"
mkdir -p "$var"
var="/tmp/my directory"
mkdir -p $var