shell read命令(shell编程 read -p 命令不能执行)
本文目录
- shell编程 read -p 命令不能执行
- 在read命令中,哪个选项可以控制输入字符:
- unix 的shell中read命令前加prompt是什么意思
- shell read读取到错误的输入
- shell脚本中的read和done
shell编程 read -p 命令不能执行
if语句本来就是执行某一个满足条件的语句,你把man的赋值在 $ID -eq 1 的时候,这时候是执行不到$man = $y下面的语句体的,它会跳过这个,这时候if语句执行完毕。你写的本来就有问题。两个if语句嵌套就好了。#!/bin/shy=yn=nID=$(ps -ef|grep tomcat |grep -v grep|grep tomcat|awk ’{print $3}’)echo "this is tomcat start/stop shell"if #当ID=1 表示tomcat 开启 如果是执行下面的参数thenread -p "y or n :" man # read -p 输入一个变量 manif #在判断如果输入的是ythen$(/home/tomcat/apache-tomcat-8.5.5/bin/shutdown.sh) #fiecho "yes is stop tomcat"elseecho " error "fi
在read命令中,哪个选项可以控制输入字符:
read命令常用选项:-a,-p,-s,-t,-n,可以控制输入字符。read命令是Shell内建命令,用于从标准输入或-u选项指定的文件描述符中读取单行,并将读取的单行根据IFS变量分割成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。
unix 的shell中read命令前加prompt是什么意思
read 命令是用来读取用户输入的,前面加prompt就是停下来等待输入的时候给个提示,比如:read -p "Please input: " var你运行下就知道了。后面一个问题不知道你什么意思。文件名称不也是字符串吗?
shell read读取到错误的输入
Linux有缓冲区的概念,read是从输入缓冲区去读的,如果缓冲区里已经有数据了,那么就直接拿过来了。在read ss之前先用另一条read语句将缓冲区数据读走,缓冲区即清空了,这时再输入就可以被read ss读到了。
这固然是一个办法,但同时也带来一个问题:如果在20s等待时间内没有任何输入,那么脚本就会要求你输入两次。
所以,完善的解决方案应该如下:
sleep 20read -t 1 discardread -p "Please input: " ssecho $ss
使用read的超时机制,超时时间设为1s,这已经是最短的超时时间设置了。
这样即使在等待时间内没有任何输入,第一条read命令在1s超时后也会自动退出。
***隐藏网址***
shell脚本中的read和done
while循环结构如下:while 条件do...done应该前面还有个do的。这是固定结构,满足条件就会一直循环下去。因为最后有输入重定向符号《,将整个while循环条件的输入指定为config变量定义的文件。所以,read会逐行读取这个文件中的字段(每行两个字段)分别作为server和ip。 需要注意的是,config.ini文件中的标题行也会被读入。 man read,说明中可以看到,如果读成功的话,read返回读取的字节数;读到文件的末尾则返回0。而对于while来讲,条件为0表示为false,则退出循环。
更多文章:
人特别难过时会觉得心痛蚂蚁庄园(人在什么时候最伤心,最难过)
2024年6月8日 08:45
金庸群侠传3无敌版下载(如何在17yy上下载金庸群侠传3无敌版)
2024年7月22日 06:50
武汉教育云空中课堂(武汉教育云空中课堂的直播课如何把二维码和链接发到群里)
2024年8月8日 06:45