我如何从标准输入读取直到出现特定字符,如示例中所示:
while [[ input is not $ ]]; do
read -p ...
for ...
done
答案1
您可以使用read
with$
作为分隔符。read
一旦遇到分隔符,就会停止从标准输入读取。为此,您实际上不需要循环。
#!/bin/bash
read -d $ -p 'input characters: '
[[ $? = 0 ]] && \
printf 'Jackpot! You typed: %s\n' $
另一方面,如果您想在打印到屏幕之前检查字符,那么您可以使用参数-N
来指示read
在读取一个字符后中断,您可以在打印任何内容之前中断。
#!/bin/bash
echo -n 'input characters: '
while read -N 1 -s -r; do
[[ $REPLY = $ ]] && \
{ printf '\njackpot! you typed: %s\n' $; break; } || printf %s "$REPLY"
done