gpt4 book ai didi

linux - 循环直到在列表中选择

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:22 24 4
gpt4 key购买 nike

我正在尝试编写一个循环脚本,直到用户在列表中选择一个值(从 09 的个位数)。这是我的 .sh 脚本,我尝试使用 sh 命令在 ubuntu 16.04 shell 中运行:

choice=999
echo $choice
until [[ $choice in 0 1 2 3 4 5 6 7 8 9 ]]
do
read -p "How many would you like to add? " choice
done

无论我做什么,我都无法让它发挥作用。这是一个测试,可以让您了解当前的错误:

sh test2.sh
999
test2.sh: 3: test2.sh: [[: not found
How many would you like to add? f
test2.sh: 3: test2.sh: [[: not found
How many would you like to add? 2
test2.sh: 3: test2.sh: [[: not found
How many would you like to add? 3
test2.sh: 3: test2.sh: [[: not found
How many would you like to add? r
test2.sh: 3: test2.sh: [[: not found

我尝试了很多事情:

  • 避免 until 并使用 while
  • 仅使用单数方括号[条件],或根本不使用方括号
  • 使用=~匹配正则表达式^[0-9]

没有任何效果。总是同样的错误。这是怎么回事? :(

最佳答案

首先,您的[[: not find 表明您没有使用 Bash。在脚本顶部添加 #!/bin/bash,或者使用 bash test2.sh 运行它,或者使用标准 [

无论哪种方式,你都不能像这样使用 in 。一种替代方法是使用 case 语句:

while :; do
read -p "How many would you like to add? " choice
case $choice in
[0-9])
break
;;
esac
done

case 语句的好处是它们允许您使用全局模式,因此 [0-9] 匹配从 09 的任何数字。

如果您最终打算使用 Bash,您也可以这样做:

#!/bin/bash

until [[ $choice =~ ^[0-9]$ ]]; do
read -p "How many would you like to add? " choice
done

这里使用正则表达式来匹配从09的since数字。

关于linux - 循环直到在列表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48022541/

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