SMZ

day01:初识shell

shell脚本:

  linux的命令的集合,把多条可执行的命令集中存放在一个文本中,这个文本称之为shell脚本

  包含基本的命令、变量、条件表达式、判断语句、循环语句等等

 

shel脚本规范(为自动化运维准备)

  1.必须存放在统一的目录下

  2.脚本的命名,最好见名知道其意思

  3.脚本最好以.sh结尾

  4.脚本第一行#!/bin/bash,指明解释器

  5.添加注释信息

  6.成对的语句、一次性写完,也就是说,框架搭好;比如for、while循环

 

变量的定义与调用

  定义:变量名=变量值

  例如:

    url=www.baidu.com      ##定义一个名为url的变量,变量值为www.baidu.com

  调用:$变量名、${变量名}

  例如:

    [root@rhel3 ~]# echo $url         ##输出变量url的值
    www.baidu.com

变量值的定义

  ①数值的定义

    num=100

  ②字符串的定义:最好使用双引号" "把字符串引起来

    [root@rhel3 ~]# name="root"
    [root@rhel3 ~]# echo $name
    root
  ③命令的定义:把命令执行的结果赋值给变量

    [root@rhel3 ~]# Time=`date +%F`        ##使用反引号``解释命令。或者使用Time=$(date +%F)也可;看个人喜好
    [root@rhel3 ~]# echo $Time
    2019-12-11

 

=======================================

shell中的特殊变量

  $0:代表脚本名、或者脚本的绝对路径;这个结果依据脚本怎样执行而定的

    例如:

      vim /server/scripts/day01.sh
      #!/bin/bash

      echo "\$0 is:" $0 ##测试$0
    执行:

      [root@rhel3 ~]# bash /server/scripts/day01.sh
      $0 is: /server/scripts/day01.sh           ##输出了脚本的绝对路径

  $N:传递给脚本的第N个参数值,0被脚本名占用;所以从1开始,$1、$2....

    例如:

      vim /server/scripts/day01.sh

      #!/bin/bash

      ##测试位置变量$N

      echo "\$1 is:" $1

      echo "\$2 is:" $2

    执行:

      [root@rhel3 ~]# bash /server/scripts/day01.sh 1       ##此处仅仅传递一个数值为1的参数,脚本接收该值、赋值给$1。没有接收到其余的值,$2自然为空
      $1 is: 1
      $2 is:
      [root@rhel3 ~]# bash /server/scripts/day01.sh 1 2     ##按照标准输入,依次为位置变量赋值
      $1 is: 1
      $2 is: 2
      [root@rhel3 ~]# bash /server/scripts/day01.sh 1 2 3     ##分别把1、2、3传递给脚本,脚本依次赋值给$1、$2、$3。此处没有输出3,是因为脚本没有调用$3,自然不会输出
      $1 is: 1
      $2 is: 2

  $#:统计传递给脚本参数的总个数,经常判断使用、控制传递给脚本参数的个数

    例如:

      [root@rhel3 ~]# cat /server/scripts/day01.sh
      #!/bin/bash
      ##测试变量$#
      echo "传递过来的参数一共为:" $#
    执行:

      [root@rhel3 ~]# bash /server/scripts/day01.sh
      传递过来的参数一共为: 0
      [root@rhel3 ~]# bash /server/scripts/day01.sh 1 2 3
      传递过来的参数一共为: 3

   $?:上条shell命令执行的返回的结果;0为成功、非0为失败【经常做判断使用】

   例如:

      [root@rhel3 ~]# echo $?
      0
      [root@rhel3 ~]# ldlasda         ##测试一个系统中没有的命令
      -bash: ldlasda: 未找到命令
      [root@rhel3 ~]# echo $?
      127

   $$:脚本执行进程id,也就是PID

 总的代码

vim /server/scripts/day01.sh
#!/bin/bash
##总测试
echo "正在执行的脚本是:" $0
echo "执行脚本的PID是:" $$
echo "第一个参数是:" $1
echo "第二个参数是:" $2
echo "传递过来的参数个数为:" $#

执行:

bash /server/scripts/day01.sh SMZ 20
正在执行的脚本是: /server/scripts/day01.sh
执行脚本的PID是: 1770
第一个参数是: SMZ
第二个参数是: 20
传递过来的参数个数为: 2

 

===========================================

 read -p “提示信息” 变量名1 变量名2...

  交互为变量赋值

  把用户标准输入的值依次赋值给变量,存在多个变量的时候,变量与变量之间空格隔离开

  当输入的值比变量多时,赋给最后一个变量的值不仅仅是一个字段,而是剩余的所有字段

  当输入的值比变量少的时候,多余的变量为空值

例如:

vim /server/scripts/day01.sh 
#!/bin/bash
##测试read
read -p "请输入你的名字:" Name
read -p "请输入你的年龄:"  Age

echo "hello ${Name},your age is ${Age}"

执行:

[root@rhel3 ~]# bash /server/scripts/day01.sh
请输入你的名字:SMZ
请输入你的年龄:20
hello SMZ,your age is 20

 

 

    

posted on 2019-12-11 13:16  SMZ  阅读(170)  评论(0编辑  收藏  举报

导航