在 bash 中循环用户输入
Loop for the user input in bash
我正在尝试为用户输入构建循环,直到获得特定输入,例如我想在输入 = 4 时停止循环并打印 siiiiii
但问题是程序卡在了循环中
如何为循环输入设置新值?
#!/bin/bash
value=4
echo Enter the number:
read $input
while [ $input != $value ]
do
echo "The input must be between 1 and 4"
read input2
input = $input2
done
echo siiiiiiiiiiiiiiiiiii
#!/bin/bash
value=4
echo Enter the number:
while read input; do
if [ "$input" = "$value" ]; then break; fi
echo "The input must be between 1 and 4" >&2
done
echo siiiiiiiiiiiiiiiiiii
你也可以这样写:
while read input && [ "$input" != "$value" ]; do
echo "The input must be between 1 and 4" >&2
done
您可能更喜欢使用 -eq
和 -ne
,因为您正在进行整数比较,因为这会给您额外的错误消息。这些错误消息是否有用是一个设计决策:
while read input && ! [ "$input" -eq "$value" ]; do
echo "The input must be between 1 and 4" >&2
done
原始代码的 4 个主要问题是:引用变量失败、赋值尝试不正确 input = $input2
(=
周围不能有 space)、使用不正确read $input
命令中的 $
,并且未能使用标准的 while read varname
习语。可能还有其他一些小问题,但这些都跳出来了。
我正在尝试为用户输入构建循环,直到获得特定输入,例如我想在输入 = 4 时停止循环并打印 siiiiii 但问题是程序卡在了循环中 如何为循环输入设置新值?
#!/bin/bash
value=4
echo Enter the number:
read $input
while [ $input != $value ]
do
echo "The input must be between 1 and 4"
read input2
input = $input2
done
echo siiiiiiiiiiiiiiiiiii
#!/bin/bash
value=4
echo Enter the number:
while read input; do
if [ "$input" = "$value" ]; then break; fi
echo "The input must be between 1 and 4" >&2
done
echo siiiiiiiiiiiiiiiiiii
你也可以这样写:
while read input && [ "$input" != "$value" ]; do
echo "The input must be between 1 and 4" >&2
done
您可能更喜欢使用 -eq
和 -ne
,因为您正在进行整数比较,因为这会给您额外的错误消息。这些错误消息是否有用是一个设计决策:
while read input && ! [ "$input" -eq "$value" ]; do
echo "The input must be between 1 and 4" >&2
done
原始代码的 4 个主要问题是:引用变量失败、赋值尝试不正确 input = $input2
(=
周围不能有 space)、使用不正确read $input
命令中的 $
,并且未能使用标准的 while read varname
习语。可能还有其他一些小问题,但这些都跳出来了。