[英]bash to use “find” command and delete the user's pattern(using special arguments)
如您所見,我寫了一個簡單的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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.