[英]How to check if $1 contains special characters in bash script?
我想檢查$1
是否具有以下任何特殊字符@#$%&*-=+
用戶將運行如下腳本:
testserver@matrix:~> scriptname somer@nd$m
腳本應該檢測somer@nd$m
是否具有任何特殊字符! 謝謝
通常,要確定變量是否包含字符集的成員,可以按照bash手冊中所述將模式匹配與字符集一起使用。
[[ $var = *[set]* ]]
在您的情況下,設定的組合非常棘手。 它包含“&”和“-”,它們具有特殊含義。 破折號在前,或者外殼將字符集視為一個范圍 。 只需將&符轉義。 所以你要做
[[ $var = *[-@#$%'&'*=+]* ]]
如果您只是在尋找特殊字符,可以使用
if egrep -q "[@#$%&*-=+]" <<< "$1"
then
echo "Special Characters"
fi
請注意,盡管在您的示例中,傳入somer@nd$m
會嘗試查找名為m
的變量,除非您在單引號中傳遞參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.