如何将命令作为参数传递给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替换和subshell,请给您输入参数,以便他们可以互相看到: $($2 $line)
正如D.S.所提到的,您可能需要
eval
之前的任何一个。高温超导
关于bash - 将命令作为参数传递给bash脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15749618/