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