[英]How to check Regex for character / (escape slash) and ^ Using Shell Scripting Linux
我想使用Linux的Shell腳本檢查行中是否有特定字符。 到目前為止,使用正則表達式(正則表達式)的代碼可以識別某些字符,但是在檢查char'^'和'/'時會出現問題(我只檢查了這兩個,也許還檢查了'\\'。
這是鱈魚
VALID='0-9a-zA-Z $%&@.#<>-'
while read line
do
if [[ ! $line =~ [^$VALID] ]]; then
echo ""
else
echo "File not okay. Contain Invalid Character"
exit 1
fi
done < $1
如果通過讀取文件來運行程序,則假設該行包含
<CurrencyTarget>IDR</CurrencyTarget>
程序將運行,然后在到達“ /”時停止。 但是如果您刪除“ /”(或“ ^”(如果存在))並替換為(假設)“&”
<CurrencyTarget>IDR<&CurrencyTarget>
程序將顯示“文件不正確。包含無效字符”。
如何修復/和^字符的行為? 我已經嘗試使用/ \\或// \\(谷歌搜索,我明白了),但仍然出錯。
nb:我知道引起的錯誤,因為如果使用^,則參數^ $ VALID將變為^^如果使用/則參數^ $ VALID也會變為^ /,但我不知道如何正確修復它。
任何幫助真的很感激
這種情況是問題所在:
if [[ ! $line =~ [^$VALID] ]]; then
^^^^^^^^^
您可以將其用作:
valid='^[0-9a-zA-Z $%&@.#<>-]+$'
line='abc-123'
[[ $line =~ $valid ]] && echo "matched" || echo "no match"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.