当前位置:   article > 正文

shell脚本-内置命令_内置脚本

内置脚本

**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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 默认情况下,echo 不会解析以反斜杠\开头的转义字符。比如,\n表示换行,echo 默认会将它作为普通字符对待。请看下面的例子:

    [root@localhost ~]# echo "hello \nworld"
    hello \nworld
    
    # 我们可以添加-e参数来让 echo 命令解析转义字符。例如:
    [root@localhost ~]# echo -e "hello \nworld"
    hello
    world
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • Tips: 如果用 read 交互参数,输入错了,请按住Ctrl+Backspace清除而不是只按住Backspace
  • 只读取一个字符

    #!/bin/bash
    read -n 1 -p "Enter a char > " char
    printf "\n"  #换行
    echo $char
        
    #运行结果:
    
    Enter a char > 1
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 在指定时间内输入密码

    #!/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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

exit

用来退出当前 Shell 进程,并返回一个退出状态

使用** ? ∗ ∗ 可以接收这个退出状态 ( ?**可以接收这个退出状态( ?可以接收这个退出状态(!:获取执行的上一个指令的返回值 #0为执行成功,非零为执行失败)

  • 运行该脚本

    #!/bin/bash
    echo "befor exit"
    exit 8
    echo "after exit
    
    [root@localhost ~]$ bash ./test.sh
    befor exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以看到,"after exit"并没有输出,这说明遇到 exit 命令后,test.sh 执行就结束了

    注意:exit 表示退出当前 Shell 进程,我们必须在新进程中运行 test.sh,否则当前 Shell 会话(终端窗口)会被关闭,我们就无法看到输出结果了。    我们可以紧接着使用$?来获取 test.sh 的退出状态:

    [root@localhost ~]$ echo $?
    8
    
    • 1
    • 2

declare

  • declare 将变量声明为整数并进行计算
#!/bin/bash
declare -i m n ret  #将多个变量声明为整数
m=10
n=30
ret=$m+$n
echo $ret
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第二关

#!/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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

第三关

#!/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/148113
推荐阅读
相关标签
  

闽ICP备14008679号