我想在 bash 中验证文件名,以确保其中没有这个 '[]' 字符
我有这个 :
if ! [[ $filename=~ ^[a-zA-Z]+$ ]]; then
echo 'Wrong filename input' >&2
exit 1
fi
但我想明确避免 [] 并允许其他特殊字符。
有什么建议吗?
谢谢。
我想在 bash 中验证文件名,以确保其中没有这个 '[]' 字符
我有这个 :
if ! [[ $filename=~ ^[a-zA-Z]+$ ]]; then
echo 'Wrong filename input' >&2
exit 1
fi
但我想明确避免 [] 并允许其他特殊字符。
有什么建议吗?
谢谢。
在运算符周围使用空格=~
:
[[ ! "$filename" =~ ^[a-zA-Z]+$ ]] && echo "bad filename" || echo "its good"
或您自己的脚本:
if [[ ! "$filename" =~ ^[a-zA-Z]+$ ]]; then
echo 'Wrong filename input' >&2
exit 1
fi
更新:
如果您只想明确避免[
,]
那么以下检查会更好:
if [[ "$filename" == *[]\[]* ]]; then
echo 'Wrong filename input' >&2
exit 1
fi