读取 - 从标准输入读取值
这个 读 内置命令用于读取单行标准输入。 此命令可用于读取键盘输入,或者在使用重定向时读取文件中的一行数据。 该命令具有以下语法:
读 [-选项[变量...]
协调 选项 是下面列出的一个或多个可用选项,并且 变量 是用于保存输入值的一个或多个变量的名称。 如果没有提供变量名,shell 变量 回复 包含数据行。
基本上, 读 将标准输入中的字段分配给指定的变量。 如果我们修改我们的整数评估脚本以使用 读,它可能看起来像这样:
#!/斌/庆典
# read-integer:计算一个整数的值。
echo -n "请输入一个整数 -> " 读取 int
如果 [[ "$int" =~ ^-?[0-9]+$ ]]; 然后如果 [ $int -eq 0 ]; 然后
echo "$int 为零。"
其他
如果 [ $int -lt 0 ]; 然后
echo "$int 是负数。"
其他
echo "$int 是正数。"
fi
if [ $((int % 2)) -eq 0 ]; 然后 echo "$int 是偶数。"
其他
echo "$int 是奇怪的。"
fi
其他
echo "输入值不是整数。" >&2 退出1
fi
#!/斌/庆典
# read-integer:计算一个整数的值。
echo -n "请输入一个整数 -> " 读取 int
如果 [[ "$int" =~ ^-?[0-9]+$ ]]; 然后如果 [ $int -eq 0 ]; 然后
echo "$int 为零。"
其他
如果 [ $int -lt 0 ]; 然后
echo "$int 是负数。"
其他
echo "$int 是正数。"
fi
if [ $((int % 2)) -eq 0 ]; 然后 echo "$int 是偶数。"
其他
echo "$int 是奇怪的。"
fi
其他
echo "输入值不是整数。" >&2 退出1
fi
我们使用 回音 与 -n 选项(抑制输出的尾随换行符)以显示提示,然后使用 读 为变量输入一个值 INT. 运行此脚本的结果如下:
[我@linuxbox ~]$ 读整数
请输入一个整数 -> 5
5为阳性。
5 是奇数。
[我@linuxbox ~]$ 读整数
请输入一个整数 -> 5
5为阳性。
5 是奇数。
read 可以将输入分配给多个变量,如下脚本所示:
#!/斌/庆典
# read-multiple: 从键盘读取多个值 echo -n "输入一个或多个值 > "
读取 var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
#!/斌/庆典
# read-multiple: 从键盘读取多个值 echo -n "输入一个或多个值 > "
读取 var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
在此脚本中,我们最多分配和显示五个值。 注意如何 读 给定不同数量的值时的行为:
[我@linuxbox ~]$ 多读
输入一个或多个值 > abcde
var1 = ‘a’ var2 = ‘b’ var3 = ‘c’ var4 = ‘d’ var5 = ‘e’
[我@linuxbox ~]$ 多读 输入一个或多个值 > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[我@linuxbox ~]$ 多读
输入一个或多个值 > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[我@linuxbox ~]$ 多读
输入一个或多个值 > abcde
var1 = ‘a’ var2 = ‘b’ var3 = ‘c’ var4 = ‘d’ var5 = ‘e’
[我@linuxbox ~]$ 多读 输入一个或多个值 > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[我@linuxbox ~]$ 多读
输入一个或多个值 > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If 读 收到少于预期的数字,额外的变量是空的,而过多的输入导致最终变量包含所有额外的输入。
如果在后面没有列出变量 读 命令,一个shell变量, 回复, 将分配所有输入:
#!/斌/庆典
# read-single: 将多个值读入默认变量 echo -n "输入一个或多个值 > "
读
echo "REPLY = '$REPLY'"
#!/斌/庆典
# read-single: 将多个值读入默认变量 echo -n "输入一个或多个值 > "
读
echo "REPLY = '$REPLY'"
运行此脚本的结果如下:
[我@linuxbox ~]$ 单读
输入一个或多个值 > A B C D
回复 = 'abcd'
[我@linuxbox ~]$ 单读
输入一个或多个值 > A B C D
回复 = 'abcd'