OS: ubuntu 14.04
我有以下脚本:
#!/bin/bash
read -rsp $'Press Y/y to execute script or any other key to exit...\n' -n1 key
if [ "$key" != 'y' ] || [ "$key" != 'Y' ] ; then
echo 'You did not press the y key'
exit
fi
echo 'some other stuff'
无论我按什么键,它都会回响"你没有按下y键"
我做错了什么?
答案 0 :(得分:2)
您需要||
代替if key is not 'y' AND if key is not 'Y' then: error
,因为逻辑应该说:
if [ "$key" != 'y' ] && [ "$key" != 'Y' ] ; then
echo 'You did not press the y key'
exit
fi
<强>代码:强>
bash
如果您正在使用if [[ $key != [yY] ]]; then
echo 'You did not press the y key'
exit
fi
,那么您可以将其缩短为:
{{1}}
答案 1 :(得分:2)
阿努巴瓦说的是什么。此外,case
可能是您if
声明的一个很好的替代选择:
#!/usr/bin/env bash
read -rsp $'Press Y/y to execute script or any other key to exit...\n' -n1 key
case "$key" in
Y|y)
echo 'You DID press the y key. Proceeding.'
;;
*)
printf "I can't handle the '%s' key!\n" "$key"
exit 1
;;
esac
echo 'some other stuff'
顺便提一下,除read
选项外,这与POSIX兼容,因此它比仅使用bash的代码更容易移植(就像使用[[ ... ]]
条件的任何内容一样)。