Answers:
您可以为此定义一个局部变量:
f=file; commandA $f && commandB $f && ...
您也可以执行所有无条件(替换&&
用;
)或并联(替换&&
用&
)。
另外,您还可以使用shell历史记录扩展来引用以前的参数:
commandA file && commandB !:1 && ...
对于具有进程替换的Bash,Korn和Z等shell,可以执行以下操作:
find file | tee >(xargs commandA) >(xargs commandB) >(xargs perl -ne '...')
您可以使用xargs构造命令行,例如:
echo file | xargs -i -- echo ls -l {}\; wc -l {}
只需将以上内容放入bash中运行即可:
echo file | xargs -i -- echo ls -l {}\; wc -l {} | bash
将示例扩展到当前目录中的所有* .c文件(在此处转义ls以防止任何shell别名替换):
\ls -1 *.c | xargs -i -- echo ls -l {}\; wc -l {} | bash
find . -name "*enums*" | xargs -i echo -e echo {}\; ls -lh {}\; echo -e '\n\n' | bash