我想使用shell脚本为linux检查一行中是否有特定字符。到目前为止,使用正则表达式(正则表达式)的代码可以识别某些字符,但是当检查字符“' ^”时会出现问题。和' /' (我只是检查这两个,也许' \'也。
这是codde
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>
程序将运行,然后在到达&#39; /#39;时停止。 但如果你删除&#39; /&#39; (或&#39; ^&#39;如果存在)并将其替换为(假设)&#39;&amp;&#39;
<CurrencyTarget>IDR<&CurrencyTarget>
程序将显示&#34;文件不正确。包含无效字符&#34;。
如何修复/和^字符的行为? 我已经尝试使用/ \或// \(谷歌搜索,我得到了这个),但仍然是错误。
nb:我知道导致的错误,因为如果使用^那么参数^ $ VALID也将成为^^如果使用/ then参数^ $ VALID将变为^ /,但我不知道如何正确修复它。
任何帮助都非常感谢
答案 0 :(得分:1)
这个问题是:
valid='^[0-9a-zA-Z $%&@.#<>-]+$'
line='abc-123'
[[ $line =~ $valid ]] && echo "matched" || echo "no match"
您可以将其用作:
{{1}}