![有人可以建议我如何针对以下问题编写脚本吗?](https://linux22.com/image/78723/%E6%9C%89%E4%BA%BA%E5%8F%AF%E4%BB%A5%E5%BB%BA%E8%AE%AE%E6%88%91%E5%A6%82%E4%BD%95%E9%92%88%E5%AF%B9%E4%BB%A5%E4%B8%8B%E9%97%AE%E9%A2%98%E7%BC%96%E5%86%99%E8%84%9A%E6%9C%AC%E5%90%97%EF%BC%9F%20.png)
任何人都可以建议我如何在脚本中使用此步骤(我需要获取第一个命令的输出,我需要对所有三个命令使用第二个命令)?
[aaa@build]$ find . -name src
./Port/bit/WE-IN/src
./MI/M-Scripts/Msg/src
./MI/M-Scripts/TT/src
[aaa@build]$ cd ./Port/bit/WE-IN/src
答案1
您正在寻找的命令是xargs
.通常你会这样使用它:
find . -name src -print0 | xargs -I{} -0 echo {}
或者对于你的明确问题:
find . -name src -print0 | xargs -I{} -0 cd {}
答案2
您可以做的是声明 shell function ,并将 find 的每个结果传递给 while 循环,该循环将针对每个目录调用该函数。
#!/bin/bash
function f
{
echo "THIS IS " $(pwd)
ls
}
find . -maxdepth 1 -type d -name "bin" -printf "%P\n" | while read DIRNAME;
do
cd $DIRNAME
f
done
这是一个示例运行:
$ ./findAndFunction.sh
THIS IS /home/xieerqi/bin
autostart-script.sh c java perl python README.md sergrep shell