gpt4 book ai didi

linux - bash 使用 "find"命令并删除用户的模式(使用特殊参数)

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

如您所见,我写了一个简单的 bash:

#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: ./rm.sh <global-path> <pattern>"
exit 1
fi

for file in $(find $1 -name '$2')
do
rm -f $file
done

当用户在终端中写入时:

./script.sh /tmp *~

脚本不工作...如何告诉脚本这些参数?

谢谢

最佳答案

您必须引用参数以防止 bash 在将模式传递给 find 命令之前扩展模式:

./script.sh /tmp '*~'

如果不想引用,必须先关闭文件名生成:

set -f
./script.sh /tmp *~
set +f # To turn file name generation back on

在您的脚本中,您需要在 $2 周围使用双引号,以便它在将值传递给 find 之前扩展为给定的模式。您还应该真正引用 $1,这样任何目录名称,即使是包含空格的目录名称,都可以作为参数传递。

find "$1" -name "$2"

关于linux - bash 使用 "find"命令并删除用户的模式(使用特殊参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21685967/

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