我正在尝试解决一个问题,即我需要将用户输入传递到此处文档并循环其值。我一次只能做一件事,无论是通过变量还是循环。两者都不起作用。
以下是我的代码。
bash <<START
echo "Input :$1"
for i in 1 2 3 4 5
do
echo "For Loop Value : $i"
done
START
运行此脚本时./heredoc&#34; asd&#34;我正在低于产量
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
我如何解决它,以便我的输入值和循环值应该输出。
提前致谢
答案 0 :(得分:2)
你没有传递任何东西。 $1
将是正在运行的shell的第一个位置参数,可能是一个空字符串。
这将做你想要的:
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
您必须转义here-document中的$i
,否则将使用当前环境中任何变量i
的值进行插值(如果未设置,则为空字符串)。
请注意,您执行希望$variable
(您所谓的&#34;传递到here-document&#34;)以及为什么我们这样做不能单引引整件事(通过将第一个SCRIPT_END
更改为'SCRIPT_END'
)。