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

时间:2017-02-16 08:07:29

标签: bash

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

#!/usr/bin/env bash

$1

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

./test.sh: line 3: pwd;: command not found

我尝试使用'&' /'&&' /';',但所有人都不能工作。 如何通过arugment运行多个命令?

1 个答案:

答案 0 :(得分:2)

您正试图让bash解释字符串($1),就好像它是脚本或键入的命令一样。有两种方法可以做到这一点:

  1. 使用eval内置:eval $1代替$1
  2. 单独运行bash以评估命令:bash -c "$1"而不是$1。记住报价。