[英]Find command in linux bash shell
find命令是:
find ./ \( -path dir_a -o -path dir_b \) -prune
我想轉換為:
./find.sh dir_a dir_b
所以我的代碼(不起作用):
function myfind() {
num=1
tmp=""
for i in $@
do
tmp="$tmp -path './$i' "
if [ $((num++)) -ne $# ]
then
tmp="${tmp} -o"
fi
done
echo $tmp # this is ok!!
find ./ \( $tmp \) -prune # is doesn't work, why???
}
在一般情況下,“ classic sh
”無法解決您要嘗試的操作,因為您需要腳本才能正確地使用名為*
或'"[ ]"'
,而普通的舊扁平字符串根本不允許其正確運行引用(很容易,甚至相當復雜)。 幸運的是,正如注釋中所建議的那樣,Bash數組使您可以使用所有必要的控制級別來執行此操作。 只要確保始終在所有可能包含文件名的地方使用引號即可。
#!/bin/bash
dir_args=()
oh=
for i; do
dir_args+=($oh '-path' "$i")
oh='-o'
done
find . \( "${dir_args[@]}" \) -prune
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.