gpt4 book ai didi

string - 测试字符串是否包含文字星号

转载 作者:行者123 更新时间:2023-11-29 09:08:51 25 4
gpt4 key购买 nike

基本上是寻找一个包含星号的字符串,四处寻找与 until 循环相关的字符串,但无济于事!

例如用户基本上会继续输入字符串,程序会拒绝输入,直到弹出带有星号的字符串。

然后此时它会回显一条消息[无法详细说明抱歉]

代码:

until [ "string" == "[asteriskstuff]" ]
do

echo "just give me a string with an asterisk for crying out loud"

read "string"

done

当用户停止输入 hi 然后决定输入 hi* 时,它将显示回显消息基本上我只是想绕过流血的星号,因为 [asteriskstuff] 是我总是犹豫不决的地方!

感谢所有帮助!

总结:如何以简单的方式绕过 until 循环的星号?

最佳答案

chepner's helpful answer很好地解释了您原来方法的问题。

以下提示,直到在用户输入的任何地方找到文字 *:

until [[ $string == *'*'* ]]; do
echo "just give me a string with an asterisk, for crying out loud"
read -r string
done
    必须使用
  • [[ ... ]] 而不是 [ ... ] 以启用模式匹配== (=) 的 RHS 上。

    • 除非您正在编写符合 POSIX 的脚本(用于 /bin/sh),其中仅支持 [ ... ],请考虑使用 [ [ ... ]] 例行公事,因为它提供了更多的功能和更少的惊喜:参见 this answer我的。
  • *'*'* 是一个 pattern那就是说:匹配 literal * - 单引号 部分 - 字符串中的任何位置; 未加引号 * 实例代表任意字符。

    • 这些模式与文件名通配中使用的模式相同,并且不是正则表达式。
    • 但是,Bash 还通过 [[ ... =~ ... ]] 提供正则表达式匹配。因此,条件也可以写成 [[ $string =~ '*' ]][[ $string =~\* ]]
  • -r 应作为习惯与 read 一起使用,以防止对 \ 字符进行意外处理。

关于string - 测试字符串是否包含文字星号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com