如何将命令作为参数传递给bash脚本?
在以下脚本中,我尝试执行此操作,但是它不起作用!

#! /bin/sh

if [ $# -ne 2 ]
then
    echo "Usage: $0 <dir> <command to execute>"
    exit 1;
fi;

while read line
do
    $($2) $line
done < $(ls $1);

echo "All Done"

该脚本的示例用法是
./myscript thisDir echo

执行上面的调用应回显thisDir目录中所有文件的名称。

最佳答案

您的命令“echo”命令从$ line中的子命令“隐藏”在子 shell 中。

我想我知道您尝试使用$($2)进行的操作,但是它可能会过大,除非不是全部,所以

 while read line ; do
    $2 $line
 done < $(ls $1)

应该适合您使用thisDir echo的示例。如果您确实需要cmd替换和subshel​​l,请给您输入参数,以便他们可以互相看到:
   $($2 $line)

正如D.S.所提到的,您可能需要eval之前的任何一个。

高温超导

关于bash - 将命令作为参数传递给bash脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15749618/

10-16 20:36
查看更多