我需要获取用户输入的数字,然后在linux终端中逐行写一个用户输入的名字。例如,如果我说选择数字2,则程序将逐行写入Name 2次。我写了一些代码,但我不知道错误在哪里。我认为这是错误所在的循环。
echo "Please enter a number "
read $number
for value in {$number}
do
echo "Name"
done
答案 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
取值1
,3
,{{1}来迭代4次。 }和dog
。如果5
为$number
,则循环仅迭代一次。您可以进行7
,但是如果$ number不是整数,那不会产生任何有用的错误消息。