运行作为参数传递给 bash 脚本的多个命令

may*_*ree 2 bash

这是一个非常简单的文件test.sh

#!/usr/bin/env bash

$1
Run Code Online (Sandbox Code Playgroud)

当我运行时./test.sh "pwd; mkdir a;",它返回

./test.sh: line 3: pwd;: command not found
Run Code Online (Sandbox Code Playgroud)

我尝试使用 '&' / '&&' / ';',但都不起作用。如何通过参数运行多个命令?

yep*_*ons 6

您试图将bash字符串 ( $1) 解释为脚本或键入的命令。有两种方法可以做到这一点:

  1. 使用eval内置:eval $1而不是$1.
  2. 单独运行bash以评估命令:bash -c "$1"而不是$1. 注意引号。