我想编写一个脚本来重复通常包含管道的命令行
./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