Bash echo使用倒逗号将变量写入文件

Bash echo使用倒逗号将变量写入文件,bash,input,echo,Bash,Input,Echo,脚本代码: echo "Command?" read command 例如,command=echo“Hello world” 输出为“Hello world”(带倒逗号),但我需要与相同的输出 给出简单的 echo "Hello world" > text.txt i、 你好,世界。我怎样才能得到它? 请记住,$命令可以接受任何值,必须在当前bash中执行,输出保存在文件中 您可以使用 eval "$command" > text.txt 但是要小心-

脚本代码:

    echo "Command?"
    read command
例如,command=echo“Hello world”

输出为“Hello world”(带倒逗号),但我需要与相同的输出 给出简单的

    echo "Hello world" > text.txt
i、 你好,世界。我怎样才能得到它? 请记住,$命令可以接受任何值,必须在当前bash中执行,输出保存在文件中

您可以使用

eval "$command" > text.txt

但是要小心-如果有人输入
rm-rf/

如果您需要
eval
命令,然后保存
STDOUT
STDERR

eval "$command" 2> text.txt
对于标准输出:

eval "$command" > text.txt
对于
STDERR

eval "$command" 2> text.txt
但是,请注意,
eval
是“邪恶”的常见拼写错误。如果
eval
是答案,那么您肯定问错了问题。看


最后但并非最不重要的一点是,“使用更多的引语!”它们至关重要。另外,了解“和”与“之间的区别。请参见mywiki.wooledge.org/Quotes和wiki.bash-hackers.org/syntax/words

“使用更多引号!“它们是至关重要的。此外,还要了解‘和’与‘和’之间的区别。”。看,我不知道你想做什么。是否是
echo“$command”>text.txt
?为了更安全:您不能提出一个可用命令列表,并让用户输入该命令的编号吗?这样你就不会接受“一切”(如果接受一切,聪明/邪恶的用户可以用你的脚本做几乎所有的事情。很难清理所有可能的输入)谢谢choroba!如果有人输入rm-rf/这将是他的问题:D我需要编写一个代码,从shell接收命令,像变量一样存储它们,执行并保存stdout或stderrI刚刚发现,如果$command=clear并且我使用eval“$command”>text.txt,当前的bash窗口将不会被清理=(@Olga:这是因为“clear”通过向STDOUT发送清除该STDOUT所需的内容来工作。如果将STDOUT重定向到“text.txt”,则这些命令将被发送到“text.txt”,而不再发送到原始STDOUT(即终端)。如果要同时发送到原始STDOUT和“file.txt”:使用:
command| tee file.txt