赞
踩
**echo **
echo 是一个 Shell 内建命令,用来在终端输出字符串,并在最后默认加上换行符。请看下面的例子:
#!/bin/bash
name="在线编程"
url="www.educoder.net"
echo "小哥哥,小姐姐,你好!" #直接输出字符串
echo $url #输出变量
echo "${name}的网址是:${url}" #双引号包围的字符串中可以解析变量
echo '${name}的网址是:${url}' #单引号包围的字符串中不能解析变量
#输出结果
[root@pre-host-work02 opt]# bash a.sh
小哥哥,小姐姐,你好!
www.educoder.net
在线编程的网址是:www.educoder.net
echo 命令输出结束后默认会换行,如果不希望换行,可以加上-n
参数,如下所示:
#!/bin/bash
name="在线编程"
url="www.educoder.net"
echo -n "小哥哥,小姐姐,你好!" #直接输出字符串
echo -n $url #输出变量
echo "${name}的网址是:${url}" #双引号包围的字符串中可以解析变量
#输出结果
[root@pre-host-work02 opt]# bash a.sh
小哥哥,小姐姐,你好!www.educoder.net在线编程的网址是:www.educoder.net
默认情况下,echo 不会解析以反斜杠\
开头的转义字符。比如,\n
表示换行,echo 默认会将它作为普通字符对待。请看下面的例子:
[root@localhost ~]# echo "hello \nworld"
hello \nworld
# 我们可以添加-e参数来让 echo 命令解析转义字符。例如:
[root@localhost ~]# echo -e "hello \nworld"
hello
world
read
使用方法:read [-options] [variables]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-75nP95HS-1664444030771)(F:\Google下载\image.png)]
使用 read 命令给多个变量赋值,并打印提示语 read -p
#!/bin/bash
read -p "Enter some information > " name age
echo "网站名字:$name"
echo "年龄:$age"
#输出结果为:
[root@pre-host-work02 opt]# bash a.sh
Enter some information > educoder 20
网站名字:educoder
年龄:20
只读取一个字符
#!/bin/bash
read -n 1 -p "Enter a char > " char
printf "\n" #换行
echo $char
#运行结果:
Enter a char > 1
1
在指定时间内输入密码
#!/bin/bash if read -t 20 -sp "Enter password in 20 seconds(once) > " pass1 && printf "\n" && #第一次输入密码 read -t 20 -sp "Enter password in 20 seconds(again)> " pass2 && printf "\n" && #第二次输入密码 [ $pass1 == $pass2 ] #判断两次输入的密码是否相等 then echo "Valid password" else echo "Invalid password" fi #输出结果 如果两次输入密码相同,运行结果为: Enter password in 20 seconds(once) > Enter password in 20 seconds(again)> Valid password 如果两次输入密码不同,运行结果为: Enter password in 20 seconds(once) > Enter password in 20 seconds(again)> Invalid password 如果第一次输入超时,运行结果为: Enter password in 20 seconds(once) > Invalid password 如果第二次输入超时,运行结果为: Enter password in 20 seconds(once) > Enter password in 20 seconds(again)> Invalid password
exit
用来退出当前 Shell 进程,并返回一个退出状态
使用** ? ∗ ∗ 可以接收这个退出状态 ( ?**可以接收这个退出状态( ?∗∗可以接收这个退出状态(!:获取执行的上一个指令的返回值 #0为执行成功,非零为执行失败)
运行该脚本
#!/bin/bash
echo "befor exit"
exit 8
echo "after exit
[root@localhost ~]$ bash ./test.sh
befor exit
可以看到,"after exit"并没有输出,这说明遇到 exit 命令后,test.sh 执行就结束了
注意:exit 表示退出当前 Shell 进程,我们必须在新进程中运行 test.sh,否则当前 Shell 会话(终端窗口)会被关闭,我们就无法看到输出结果了。 我们可以紧接着使用$?
来获取 test.sh 的退出状态:
[root@localhost ~]$ echo $?
8
declare
#!/bin/bash
declare -i m n ret #将多个变量声明为整数
m=10
n=30
ret=$m+$n
echo $ret
第二关
#!/bin/bash var="hello " var2="www.educoder.net!!--->" ##1.请用echo输出变量 var var2 ,期待输出结果为 “hello www.educoder.net" 后面没有换行符号 无需补全 echo -n $var $var2 ##2.结合之前shell字符串的学习,请截取var2,从左边第5个字符开始,截取的字符个数为8,将截取的值赋值给变量Var3 ##参照第一题,用echo 输出 var Var3,后面没有换行符 Var3=${var2:4:8} echo -n $var $Var3 ##3.已知用户在屏幕输入一个参数 "SRE",无需补全 read -p "Enter your job >:" job echo "我的工作职业是": $job
第三关
#!/bin/bash ##1.补全代码 ## 整数变量a b c, 已知a为整数100,b为整数300,c=$a+$b, 打印c的值,补全代码让其打印值为整数400 declare -i a b c a=100 b=300 c=$a+$b echo $c ##2.补全代码[ $? -eq ]内的值,-eq的意思是‘等于’,注意 [ ] 两边要留一个空格 ##通过$?判断上面的命令是否运行成功,如果运行成功则输出success ,否则输出 faild if [ $? -eq 0 ] ;then echo "success" else echo "faild" fi
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。