Stu*_*Art 4 unix string bash loops
基本上寻找一个包含星号的字符串,四处寻找一个与直到循环相关的字符串,但无济于事!
例如,用户基本上会继续键入字符串,程序将拒绝它们,直到弹出一个带星号的字符串.
然后在这一点上它会回复一条消息[不能详细说明抱歉]
码:
until [ "string" == "[asteriskstuff]" ]
do
echo "just give me a string with an asterisk for crying out loud"
read "string"
done
Run Code Online (Sandbox Code Playgroud)
当用户停止输入hi然后决定输入hi*它将显示回声消息基本上我只想绕过bleedin'星号因为[asteriskstuff]是我总是动摇的区域!
所有帮助赞赏!
摘要:如何以直接循环的简单方式绕过星号?
chepner的有用答案很好地解释了原始方法的问题.
以下提示,直到*在用户输入中的任何位置找到文字:
until [[ $string == *'*'* ]]; do
echo "just give me a string with an asterisk, for crying out loud"
read -r string
done
Run Code Online (Sandbox Code Playgroud)
[[ ... ]]而不是[ ... ]必须使用,以便在()的RHS上启用模式匹配.===
/bin/sh仅[ ... ]支持),否则请考虑[[ ... ]]常规使用,因为它提供了更多功能和更少的意外:请参阅我的这个答案.*'*'*是一种模式 ,表示:匹配文字 * - 单引号部分 - 字符串中的任何位置; 在不带引号的 *情况下,代表任意字符的运行.
[[ ... =~ ... ]].因此,条件也可以写成[[ $string =~ '*' ]]或[[ $string =~ \* ]]-r应该与read习惯一起使用,以防止意外处理\字符.