运行存储在变量中的命令以回显到文件中

运行存储在变量中的命令以回显到文件中

如何让存储的命令适用于以下场景:

CMD='echo "test" >> test.txt'
$CMD

它适用于其他场景,例如:

CMD='mkdir test'
$CMD

答案1

正确的规则必须是:

  • 将数据存储在变量中,将代码存储在函数中。

因此,让该命令工作的正确方法是:创建一个函数:

first_command (){ echo "test" >> test.txt; }

调用该函数:

first_command

就是这样。


将命令存储为字符串是错误的。
是均匀的更差使用 eval 运行此类命令。

它似乎适用于简单的命令,但隐藏的问题是 eval 步骤删除了命令的引用。

如果你存储这个命令

CMD='echo "test" >> test.txt'

(是eval "$CMD"的,甚至引用)将执行此命令:

echo test >> test.txt

没有引号!

这是非常很容易忘记报价需要使用 eval 进行特殊管理。无论如何,让报价正常工作总是很棘手的。

尝试在没有 eval 步骤的情况下执行存储在没有重定向的变量中的命令(需要使用 eval 的主要问题)仍然很棘手,并且并非在所有情况下都有效。

请阅读此处对该问题的精彩介绍:
我试图将命令放入变量中,但复杂的情况总是失败!

相关内容