echo $PATH 字面上打印“$PATH”作为输出
echo $PATH literally prints "$PATH" as the output
我想浏览一个文本文件,每行包含一个命令。我想读取每一行,执行每个命令,然后将输出保存到文件中。
给我带来问题的脚本部分是:
echo COMMAND LOG > $dest/command.log
echo ====== >> $dest/command.log
while IFS= read -r v
do
echo ====== >> $dest/command.log
echo COMMAND: $v >> $dest/command.log
echo ======OUTPUT====== >> $dest/command.log
$v >> $dest/command.log
echo ====== >> $dest/command.log
done < "$commands"
它对除 "echo $PATH" 之外的所有东西都非常有效,它会生成:
======
COMMAND: echo $PATH
======OUTPUT======
$PATH
有没有办法让它正常工作?提前致谢。
这是预料之中的,因为你是逐行获取文件,你得到的是字符串,而不是变量。 $v
是一个 "$PATH"
字符串,仅此而已。
您必须 eval
您的字符串才能获得关联变量的值:
echo COMMAND: $(eval $v) >> $dest/command.log
我想浏览一个文本文件,每行包含一个命令。我想读取每一行,执行每个命令,然后将输出保存到文件中。
给我带来问题的脚本部分是:
echo COMMAND LOG > $dest/command.log
echo ====== >> $dest/command.log
while IFS= read -r v
do
echo ====== >> $dest/command.log
echo COMMAND: $v >> $dest/command.log
echo ======OUTPUT====== >> $dest/command.log
$v >> $dest/command.log
echo ====== >> $dest/command.log
done < "$commands"
它对除 "echo $PATH" 之外的所有东西都非常有效,它会生成:
======
COMMAND: echo $PATH
======OUTPUT======
$PATH
有没有办法让它正常工作?提前致谢。
这是预料之中的,因为你是逐行获取文件,你得到的是字符串,而不是变量。 $v
是一个 "$PATH"
字符串,仅此而已。
您必须 eval
您的字符串才能获得关联变量的值:
echo COMMAND: $(eval $v) >> $dest/command.log