0

我想在 bash 中验证文件名,以确保其中没有这个 '[]' 字符

我有这个 :

if ! [[ $filename=~ ^[a-zA-Z]+$ ]]; then
    echo 'Wrong filename input' >&2 
    exit 1
fi

但我想明确避免 [] 并允许其他特殊字符。

有什么建议吗?

谢谢。

4

1 回答 1

5

在运算符周围使用空格=~

[[ ! "$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
于 2013-10-23T14:00:20.347 回答