Bash附带了许多内置命令,您可以在命令行或Shell脚本中使用它们。
bash内置read命令
read
是bash内置命令,可从标准输入(或文件描commands述符)中读取一行并将该行拆分为单词。 第一个单词分配给名字,第二个单inputs词分配给名字,依此类推。
内置read
的一般语法采用以下形式:
read [options] [name...]
为说明命令的工作原理,请打开终端,输入read var1 var2
,然后按“ Enter”。 该命令将等待用户输入。 输入两个单词并按“ Enter”。
rcommand造句ead var1 var2
单词被分配给作linux创建文件为参数传递给read
命令的名称。 使用eccommand用法ho
或printf
进行验证:
echo $var1
Hello,
World!
您可以使管道疏通用其他方法(例如管道,here-string或hercommander什么意思edoc)将标准输入传递给read
,而不是在终端上输入
echo "Hellcommand用法o, Worcommandsld!" | (read var1 var2; echo -e "$var1 \n$var2")linux
read
和echo
用括管道漏水修复号括起来并在同一子shell中执行。
Hello,
World!
以下是使用here字符串和printf
的示例:
read -r var1 var2 <<< "Hello, World!"
Var1: Hello,
Varreader2: World!
如果没有为read
命令提管道电影供参数,则将整行分配给REPLY
变量:
echo "Hello, world!" | (read; echo "$REPLY")
Hello, World!
如果提供给read
的参数数量大于从输入中读取的单词数,则其余单词将分配最后字符串:
echo "Linux is awesome." | (read var1 var2; echo -einput函数 "Var1: $input是什么意思中文var1 \nVar2: $var2")
Var1: Linux
Varcommander什么意思2: is awcommand是什么意思中文esome.
否则,如果参数的数量少于reader名称的数量,则将空值分配给其余名称:
echo "Hello, World!" | (read var1 var2 var3; echo -e "Var1ready是什么意思电动车上的: $varcommander什么意思1 \nVar2: $var2 \nVar3: $var3")
Var1: Hello,
Var2: World!
Var3:
默认情况下,read
将反斜杠解释为转义符,有时可能会导致意外行为。 要禁用反斜杠转义,请使用-r
选项调用该命令。
以下是显示在有-r
选项和没有-r
选项的情况下调用read
时的工作方式的示例:
read <<< "Hello, \tWorld!"
Hello, tWorcommanderld!
read -r <<< "Hello, \tWorld!"
Hello, \tWorld!
通常,您应始终将read
与inputbox函数返回值的类型是-r
选项一起使用。
更改定界符here doc
read
的默认行为是使用一个或多个input输入的是什么类型空格,制表符和换行符作为分隔符,将行拆分为单词。 要input函数python将另一个字符用作分隔符,请将其分配给read是什么意思IFS
变量(内部字段分隔符)。
echo "Linux:is:awesome." | (IFS=":" read -r var1 var2 var3; echo -e "$var1 \n$var2 \n$var3")
Linux
is
awesome.
如果将IFS
设置为空格或制表符linux以外的字符,则单词之间将仅用一个字符分隔:
echo "Linux::is:awesome." | \command
该行分为四个字。 第二个单词是一个空值,表示定界符之间的段。 之所以创建它,是因为我们使用了两个彼此相邻的定界符(::
)。
Var1: Linux
Var2:
Var3: is
Var4: awesome.
您可以使用多个定界符来分隔行。 当指定多个定界符时,请将字符分配给IFS
变量,并且linux系统安装在它们之间没有空格。
以下是使用_
和-
作为分隔符的示例:
echo 'Linux_is-awesome.' | (IFS="-_" read -r var1 var2 var3; echo -e "$var1 \n$var2 \n$var3")
Linux
is
awesome.
提示字串
编写交互式bash脚本时,可以使用read
命令获取用户输入。
要指定提示字符串,请使用-p
选项。 该提示会在管道疏通剂有用吗执行read
之前打印出来,并且不包含换行符。
这是一个简单的例子:
read -r -p "Are you sure?"
通常,您可以在while
循环内使用read
命令来强制用户提供预期的答案之一。
以下代码将提示用户重新启动系统:
while true; do
read -r -p "Do you wish to reboot the system? (Y/N): " answer
case $answlinuxer in
[Yy]* ) reboot; br管道图纸基本知识eak;;
[Nn]* ) exit;;
* ) echo "Please answer Y or N.";;
eslinux系统安装ac
done
如果shell脚本要求用户输入敏感信息(例如密码),请使用-s
选项,告诉read
不要在终端上打印输入:inputstream
read -r -s -p "Enter your passwordinputstream: "
将单词分配给数组
要将单词分配给数组而不是变量名,请使用-a
选项调用read
命令:
read -r -a MY_ARR <<<commanding "Linux is awesome."
for i in "${MY_ARR[@]}"; do
echo "$i"
dreadone
Linux
is
awesome.
当同时给出数组和变量名时,所有单词都分配给数组。
结论
read
命令用于将读取用户输linux入行拆分为单词。
如果您有任何reading是什么意思问题或反馈,请随时发表评论。
发表评论