Unix 命令行使用管道重复命令

Unix 命令行使用管道重复命令

我想编写一个脚本来重复通常包含管道的命令行

./myscript.sh ls -lart |grep ^d

myscript.sh做了一堆事情,然后想要执行ls -lart |grep ^d并将其输出传输到其他东西中。

(如果这真的很简单并且有一行解决方案,那么提前抱歉)。

到目前为止我已经尝试过

$@ | someothercommand

$* | someothercommand

但无济于事...

答案1

shell 解析命令行的方式意味着 shell 脚本的输入将在到达管道时停止。为了解决这个问题,您可能需要将命令行放在引号中,因此:

./myscript.sh "ls -lart |grep ^d"

然后在脚本中使用eval命令执行它,如下所示:

 eval "$@" | someothercommand 

相关内容