【发布时间】:2017-03-02 18:54:53
【问题描述】:
我有两个 bash 脚本。第一个监听管道“myfifo”的输入并将输入作为命令执行:
fifo_name="myfifo"
[ -p $fifo_name ] || mkfifo $fifo_name;
while true
do
if read line; then
$line
fi
done <"$fifo_name"
第二个将命令“echo $SET_VAR”传递给“myfifo”管道:
command='echo $SET_VAR'
command_to_pass="echo $command"
$command_to_pass > myfifo
如您所见,我想通过管道传递“echo $SET_VAR”。在侦听器进程中,我设置了一个 $SET_VAR 环境变量。我希望命令“echo $SET_VAR”的输出是“var_value”,它是环境变量 SET_VAR 的值。
在一个 bash 进程中运行第一个(侦听器)脚本,然后在另一个进程中通过第二个脚本传递命令会得到以下结果:
$SET_VAR
我希望打印“var_value”。而是打印字符串文字 $SET_VAR。为什么会这样?
【问题讨论】:
-
我使用了这个问题的代码:stackoverflow.com/questions/25900873/…
-
据我所知,它没有回答我的问题。
-
有风险的 cmd
eval可能会有所帮助,但您不包含设置var_value的代码(我可以看到)。请使用复制/粘贴测试代码更新您的 Q。 (不要让我们猜测你是怎么做的)。祝你好运。
标签: bash environment-variables echo fifo