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



如你所见,我写了一个简单的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"

相关内容

  • 没有找到相关文章

最新更新