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