在bash-if语句中使用通配符
我在bashshell中编写了以下代码。 它应该接受位置参数,如果它以破折号“-”开头,则应该输入错误消息 但是由于某些原因,if语句总是被跳过。它只有在我按字面输入时才起作用-* 我得到的印象是,修复与“$”有关 以下是代码片段:在bash-if语句中使用通配符,bash,shell,sh,Bash,Shell,Sh,我在bashshell中编写了以下代码。 它应该接受位置参数,如果它以破折号“-”开头,则应该输入错误消息 但是由于某些原因,if语句总是被跳过。它只有在我按字面输入时才起作用-* 我得到的印象是,修复与“$”有关 以下是代码片段: EXECNAME=$1 if [ "$EXECNAME" = "-*" ]; then echo "error: invalid executable name" fi 您可以使用双方括号[[和],而无需在匹配模式上使
EXECNAME=$1
if [ "$EXECNAME" = "-*" ]; then
echo "error: invalid executable name"
fi
您可以使用双方括号
[[
和]
,而无需在匹配模式上使用引号,即可在BASH中获得glob支持:
[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name"
为了与glob模式匹配,我更喜欢使用
case
:
case $EXECNAME in
-*) echo "error: invalid executable name"
esac