不知道这里发生了什么。我在 Mac 上使用 Bash 3.2。我有:
ores_resource(){
for f in "$(cd "$HOME/.oresoftware/bash" && find . -type f)"; do
f="${f:2}"
echo "my file $f"
done;
}
我得到了这样的回应:
my file r2g.sh
./fame.completion.sh
./read_json.sh
./nlu.sh
./lmx.sh
./public-bash-utils.sh
./run-tsc-if.sh
./r2g.completion.sh
./fame.sh
./waldo.sh
./nlu.completion.sh
那么这里到底发生了什么 - 我以为它会在每行前面注销“我的文件”?
答案1
这是使用选项的解决find
方案-exec
:
ores_resource() {
cd $HOME/.oresoftware/bash
find . -type f -exec bash -c 'echo "my file ${1:2}"' bash {} \;
}
对于新的 bash 进程找到的每个文件名,find
都以 后面的命令字符串启动-c
。每个文件名都{}
作为参数传递$1
给 bash 进程(就像你的变量$f
)。