read默认从标准输入读取数据,而这里的管道符会将前面ls命令的结果作为标准输迟好举入传递给read命令。所以只要前面还有数据,read命令就不会等待用户袜伍输入。
其实,这里可以用 for ... in ... 结构来替代while循环。
forl1in`ls$d1`
do
码碧read-p"1or0"y1
......
done
㈡ shell脚本read命令的用法
read命令是读取用户在键盘上输入的信息,然后赋值到一个变量中;read命令是最常用的一个命令,它主要有三个参数,我们一个一个的讲解;
最基本用法:
echo-n "输入你的姓名:"
read name
echo "你的姓名$name"
echo后面的-n是指不换行,应为echo默认是换行的;
--------------------------------------------------------------------------
read -p用法
它的作用是在使用read的命令行是可以直接指定一个提示,例如
read -p "输入你的姓名" name
也就是把echo省略掉了;
-----------------------------------------------------------------------------
read -t用法
使用read命令后,如果你不在键盘上输入一个信息,那系统会一直等待着你的输入,而-t的用法就相当于计时器的作用,几秒中内要是没有输入信息,那read命令便不会再等下去;
read -t 5 -p "在五秒内输入你的姓名" name
-----------------------------------------------------------------------------
read -s用法
隐藏输入的值,就是在键盘上输入密码这一类的保密数据时不实时的显示出来;
㈢ shell脚本中的read和done
while循环结构如下:
while 条件
do
...
done
应该前桐洞梁面还有个do的。这是固定结构,满足条件就会一直循环下去。
因为最后有输入重定向符号<,将整个while循环条件的输入指定为config变量定义的文颤笑件。所以,read会逐行读取这个文件中的字段(每行两个字段)分别作为server和ip。
需要注意的是,config.ini文件中的标题行也会被读入。
man read,说明中可以看局运到,如果读成功的话,read返回读取的字节数;读到文件的末尾则返回0。而对于while来讲,条件为0表示为false,则退出循环。
㈣ shell脚本怎样读取文件的值,并赋值给变量
在sell脚本中,读取键盘输入的内容并将其赋值给shell变量的命令为:
read -p "input a val:" val echo $val
read - 从标准输入读取数值。这个 read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用 重定向的时候,读取文件中的一行数据。
它的语法形式一般是:
read [-options] [variable...]
(4)shellread命令扩展阅读:
Shell是一种脚本语言,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
常见的编程语言分为两类:一个是编译型语言,如:c/c++/java等,它们远行前全部一起要经过编译器的编译。
㈤ shell编程 read -p 命令不能执行
if语句唤绝本来就是执行某一个满足条件的语句,你把man的赋值在 $ID -eq 1 的时候,这时候是执行不到$man = $y下面的语句体的,它枣链扰会跳过这个,这时候if语句执行完毕。你写的本来就有问题。两个if语句嵌套就好了。凳旦
#!/bin/sh
y=y
n=n
ID=$(ps -ef|grep tomcat |grep -v grep|grep tomcat|awk '{print $3}')
echo "this is tomcat start/stop shell"
if [ $ID -eq 1 ] #当ID=1 表示tomcat 开启 如果是执行下面的参数
then
read -p "y or n :" man # read -p 输入一个变量 man
if [ $man = $y ] #在判断如果输入的是y
then
$(/home/tomcat/apache-tomcat-8.5.5/bin/shutdown.sh) #
fi
echo "yes is stop tomcat"
else
echo " error "
fi
㈥ shell的read什么时候会执行失败
read如果有指定超时时间,则超时时会失败旅衫脊;
一个无效的文件句柄,比如read line < a.conf,塌慎而a.conf这个文件不存在;
收到信号,比如ctrl+c;
读到文件末尾。
暂时拆渗只知道这四个,欢迎补充!!!
㈦ shell read读取到错误的输入
Linux有缓冲区的概念,read是从输入缓冲区去读的,如果缓冲区里已经有数据了,那么就直接拿过来了。在readss之前先用另一条read语句将缓冲区数据读走,缓冲区即清空了,这时再输入就可以被readss读到了。
这固然是一个办法,但同时也带来一个问题:如果在20s等待时间内没有任何输入,那么脚本就会要求你输入两次。
所以,完善的解决方案应该如下:
sleep20
read-t1discard
read-p"Pleaseinput:"ss
echo$ss
使用read的超时机制,超时时间设为1s,这已经是最短的超时时间设置了。
这样即使在等待时间内没有任何输入,第一条read命令在1s超时后也会自动退出。
参考:http://superuser.com/questions/276531/clear-stdin-before-reading
㈧ 在Shell脚本中,读取键盘输入的内容并将其赋值给Shell变量的命令是什么
在sell脚本中,读取键盘输入的内容并将其赋值给shell变量的命令为:
read-p"inputaval:"valecho$val
read - 从标准输入读取数值。这个 read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用 重定向的时候,读取文件中的一行数据。
它的语法形式一般是:
read[-options][variable...]
这里的 options 是下面列出的可用选项中的一个或多个,且 variable 是用来存储输入数值的一个或多个变量名。 如果没有提供变量名,shell 变量 REPLY 会包含数据行。
基本上,read 会把来自标准输入的字段赋值给具体的变量。
㈨ 在read命令中,哪个选项可以控制输入字符:
read命令常用选项:-a,-p,-s,-t,-n,可拦扮以控制输入字符。read命令是Shell内建命令,用于从标准输入或-u选项指定的文件描述符中读取单行,并将读取的单行根据IFS变量分割成多个字首者段,并将分割后的字段分别赋值给指定的变量列表var_name。者衡薯
㈩ 用shell写脚本的时候,read命令报错,本来想read一个name变量的,运行之后这行报错。
应该是格式错误吧。
重新再输入一遍看看,不要用复制粘贴。