有人可以告诉我错误在哪里吗

时间:2019-12-30 10:51:10

标签: linux bash

我需要获取用户输入的数字,然后在linux终端中逐行写一个用户输入的名字。例如,如果我说选择数字2,则程序将逐行写入Name 2次。我写了一些代码,但我不知道错误在哪里。我认为这是错误所在的循环。

echo "Please enter a number "
read $number

for value in {$number}
do
echo "Name"
done

2 个答案:

答案 0 :(得分:0)

要读取输入并将其保存到名为number的变量中,请执行以下操作:

read number

要获取数字的值,请执行$number${number}。删除{{1}中的{ }或将{$number}移至$

答案 1 :(得分:0)

只需:

echo "Please enter a number "
read number
if ! test "$number" -gt 0 2> /dev/null; then
    echo "You must enter an integer greater than 0" >&2
    exit 1
fi
yes Name | sed ${number}q

但是不要提示输入数字。将其作为命令行参数,然后执行

yes Name | sed "${1}q"

如果参数无效,让sed生成错误消息。

循环的麻烦在于,for value in $number接受字符串$number并将其在空白处断开(实际上取决于IFS,但不要被细节所困扰)并遍历每个值。也就是说,如果$number是字符串1 3 dog 5,则循环将使用$value取值13,{{1}来迭代4次。 }和dog。如果5$number,则循环仅迭代一次。您可以进行7,但是如果$ number不是整数,那不会产生任何有用的错误消息。