Bash将多个命令组合成一个命令

Bash将多个命令组合成一个命令

有没有办法将以下内容组合成一个漂亮的“一行”:

echo "free -m" > /tmp/dC4v2cK
bash /tmp/dC4v2cK

答案1

或者如果你确实想要一个子 shell:

/bin/bash -c "free -m"

答案2

我认为您正在寻找eval(如foo='free -m'; eval $foo)。请记住,执行此类操作会产生安全隐患,如果$foo来自不受信任的来源,那么您可能会无意中做坏事。例如,如果有人设法让此行发生会怎样。 foo='rm -rf /'

$ help eval
eval: eval [arg ...]
    Execute arguments as a shell command.

    Combine ARGs into a single string, use the result as input to the shell,
    and execute the resulting commands.

    Exit Status:
    Returns exit status of command or success if command is null.

相关内容