传递一个输入变量并在此处文档 bash 脚本中循环它

Pass an input variable and loop it in here document bash script

我正在尝试解决一个问题,即我需要将用户输入传递给此处文档并循环其值。我一次只能做一件事,传递变量或循环。两者都不起作用。

下面是我的代码。

bash <<START
echo "Input :"
for i in 1 2 3 4 5
do
echo "For Loop Value : $i"
done
START

虽然 运行 这个脚本 ./heredoc "asd" 我正在低于输出

Input :asd
For Loop Value :
For Loop Value :
For Loop Value :
For Loop Value :
For Loop Value :

如您所见,i 的值没有出现。

但是如果我添加单引号,它会给出以下输出。

Input :
For Loop Value :1
For Loop Value :2
For Loop Value :3
For Loop Value :4
For Loop Value :5

我怎样才能解决这个问题,以便我的输入值和循环值应该出现在输出中。

提前致谢

你没有传递任何东西。 </code> 将是 运行 shell 的第一个位置参数,可能是一个空字符串。</p> <p>这会做你想做的事:</p> <pre><code>variable="hello there" bash <<SCRIPT_END echo "Input: $variable" for i in 1 2 3 4 5; do echo "For Loop Value: $i" done SCRIPT_END

您必须转义此处文档中的 $i,否则它将被插入当前环境中任何变量 i 的值(如果未设置则为空字符串)。

请注意,您 希望 $variable(您称之为 "passing to the here-document")发生这种情况,这就是我们不能只用单引号的原因整个事情(通过将第一个 SCRIPT_END 更改为 'SCRIPT_END')。