【发布时间】:2016-02-03 21:43:33
【问题描述】:
我正在尝试检查输入字符串是否包含括号,它们是:()[]{}。
我写了以下代码:
#!/bin/bash
str="$1"
if [ -z "$str" ]; then
echo "Usage: $(basename $0) string"
exit 1
fi
if [[ "$str" == *['\{''}''\[''\]''('')']* ]];
then
echo "True"
else
echo "False"
fi
如果字符串包含以下任何一个:[]{},则输出正确,但如果字符串包含(),则出现错误:
-bash: syntax error near unexpected token `('
这些是我迄今为止尝试过的事情:
*['\(''\)']*
*['()']*
*[()]*
知道应该怎么写吗?
编辑#1:
[root@centolel ~]# date
Tue Nov 3 18:39:37 IST 2015
[root@centolel ~]# bash -x asaf.sh {
+ str='{'
+ '[' -z '{' ']'
+ [[ { == *[{}\[\]\(\)]* ]]
+ echo True
True
[root@centolel ~]# bash -x asaf.sh (
-bash: syntax error near unexpected token `('
[root@centolel ~]#
【问题讨论】:
标签: string bash shell escaping