gpt4 book ai didi

linux - 在 linux bash shell 中查找命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:47 25 4
gpt4 key购买 nike

查找命令是:

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???
}

最佳答案

在一般情况下,“经典 sh”无法解决您尝试的问题,因为您需要您的脚本与名为 * 的目录一起正常工作"[ ]"' 和普通的旧扁平字符串根本不允许正确引用它(很容易,甚至相当复杂)。幸运的是,正如评论中所建议的那样,Bash 数组允许您使用所有必要的控制级别来执行此操作。只要确保始终在任何可能包含文件名的地方使用引号即可。

#!/bin/bash
dir_args=()
oh=
for i; do
dir_args+=($oh '-path' "$i")
oh='-o'
done
find . \( "${dir_args[@]}" \) -prune

关于linux - 在 linux bash shell 中查找命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29248943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com