当在bash shell中使用case语句时,如果给定的模式与任何一个模式都不匹配,则会收到错误消息“pattern not matched”。这通常是由于语法错误或模式不正确导致的。为了解决这个问题,我们需要仔细检查模式,确保它们正确无误。
例如,假设我们有一个case语句,用于根据参数显示不同的输出:
#!/bin/bash
case "$1" in
start)
echo "Starting..."
;;
stop)
echo "Stopping..."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
如果我们给定了以下输入“restart”,则会出现“pattern not matched”错误消息:
$ ./myscript.sh restart
./myscript.sh: line 7: syntax error near unexpected token `)'
./myscript.sh: line 7: ` *)'
pattern not matched: restart
这是由于在case语句中没有与“restart”匹配的模式。为了解决这个问题,我们可以在默认模式下提供更明确的错误消息,以指示用户提供正确的参数:
#!/bin/bash
case "$1" in
start)
echo "Starting..."
;;
stop)
echo "Stopping..."
;;
*)
echo "Error: Invalid argument. Usage: $0 {start|stop}"
exit 1
;;
esac
现在,如果我们给定了“restart”作为参数,将会显示以下错误消息:
$ ./myscript.sh restart
Error: Invalid argument. Usage: ./myscript.sh {start|stop}