简单脚本测试--对谈式脚本@read

#!/bin/bash
#User inputs his first name and last name. Program shows his full name.
# History:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input your first name: " firstname # 提示使用者输入
read -p "Please input your last name: " lastname # 提示使用者输入

echo -e "\nYour full name is: $firstname $lastname" # 结果由屏幕输出

执行脚本:

[root@SOR_SYS test]# sh read-p.sh
Please input your first name: zhu
Please input your last name:
ying

Your full name is: zhu ying
[root@SOR_SYS test]#

下面我们来看看read的用法:

[root@SOR_SYS ~]# read [-pt] variable

选项与参数:
-p  :后面可以接提示字符!
-t  :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!
范例一:让用户由键盘输入一内容,将该内容变成名为 atest 的变量
[root@SOR_SYS ~]#read atest
This is a test        <==此时光标会等待你输入!请输入左侧文字看看
[root@www ~]# echo $atest
This is a test          <==你刚刚输入的数据已经变成一个变量内容!
范例二:提示使用者 30 秒内输入自己的大名,将该输入字符串作为名为 named 的变量内容
[root@www ~]# read -p "Please keyin your name: " -t 30 named
Please keyin your name: zhuying  <==注意看,会有提示字符喔!
[root@www ~]# echo $named
zhuying      <==输入的数据又变成一个变量的内容了!

read 之后不加任何参数,直接加上变量名称,那么底下就会主动出现一个空白行等待你的输入(如范例一)。 如果加上 -t 后面接秒数,例如上面的范例二,那么 30 秒之内没有任何动作时, 该命令就会自动略过了~如果是加上 -p ,嘿嘿!在输入的光标前就会有比较多可以用的提示字符给我们参考!

==========》》》》》》》》》》》

例子:以下只是我在其他脚本中截取的一部分,为了方便大家更好的理解read的用法~

cpsDeploy_menu(){
echo " --- CPS APP Menu--- "
echo " help app command: getdeploy app_name "
#echo "deploy $size $app_name "
echo " Check app status: status app_name:app_name "
echo " Deploy Command : deploy IP app_name source_path/"
#echo

while true ; do
read -p "App> "
appcomm deploylist(以前一直不晓得还能出现多个变量)

case "$appcomm" in
"quit")

break
;;
"getdeploy")
echo " Search $deploylist :"
num=`grep "^$deploylist" cpsapplist.prop | wc -l`
if [ $num \> 0 ]
then
getdeployapp $deploylist
else
echo " Please sure the app name is correct! "
fi
;;
"deploy")
echo " cps app deployment now...."
echo "deploy directory: $deploylist"
deploywarapp $deploylist
#getdeploylist $deploylist
;;
"status")
getappstatus $deploylist
;;
esac

done

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ps:当子程序完成后,在子程序内的各项变量或动作将会结束而不会传回到父程序中

[root@www scripts]# echo $firstname $lastname
[root@SOR_SYS test]# sh read-p.sh 
<==确认了,这两个变量并不存在喔!
Please input your first name: zhu
Please input your last name: ying 
<==看吧!在 script 运行中,这两个变量有生效
[root@www scripts]# echo $firstname $lastname
<==事实上,这两个变量在父程序的 bash 中还是不存在的!

如果将程序相关性绘制成图的话,我们以下图来说明。当你使用直接运行的方法来处理时,系统会给予一支新的 bash 让我们来运行 read-p.sh里面的命令,。 当 read-p.sh运行完毕后,子程序 bash 内的所有数据便被移除,因此上表的练习中,在父程序底下 echo $firstname 时, 就看不到任何东西了!这样可以理解吗?

sh read-p.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值