shell脚本学习-02 shell命令

北城以北 提交于 2020-02-26 13:38:00

shell命令

1、read命令:从键盘读入数据,赋给变量

如:read USERNAME

  echo  ${M_VAR}

2、expr命令:对整数型变量进行算术运算

例如:expr 3 + 5
         expr $var1 - 5
          expr $var1 / $var2
          expr $var3 \* 10

复杂的运算:expr expr 5 + 7/$var4
将运算结果赋予变量:var4=expr $var1 / $var2

var4=$(exprexpr $var1 + $var2/$var3)

3、变量测试语句:用于测试变量是否相等、 是否为空、文件类型等。
格式:test 测试条件
测试范围:整数、字符串、文件

字符串测试:
test str1=str2 测试字符串是否相等
test str1!=str2 测试字符串是否不相等
test str1 测试字符串是否不为空
test -n str1 测试字符串是否不为空
test -z str1 测试字符串是否为空

整数测试:
test int1 -eq int2 测试整数是否相等
test int1 -ge int2 测试int1是否>=int2
test int1 -gt int2 测试int1是否>int2
test int1 -le int2 测试int1是否<=int2
test int1 -lt int2 测试int1是否<int2
test int1 -ne int2 测试整数是否不相等

文件测试:
test -d file 指定文件是否目录
test -f file 指定文件是否常规文件
test -x file 指定文件是否可执行
test -r file 指定文件是否可读
test -w file 指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件的大小是否非0

变量测试语句一般不单独使用,一般做为if语句的测试条件,如:
if test -d $1 then

fi
变量测试语句可用[]进行简化,如:
test -d $1 等价于 [ -d $1 ]

4、流控制语句

流控制语句:用于控制shell程序的流程

(1)exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。
例如:exit 0

(2) if语句

例:

#!/bin/bash
#判断fileA是否存在,如果不存在创建它

if [ -a fileA ]
  then
     echo "fileA就绪"
else
     touch fileA

fi

更复杂的if语句:

  if 条件1 then
              命令1
      elif 条件2 then
              命令2
      else
              命令3
       fi

多个条件的联合:
-a:逻辑与,仅当两个条件都成立时,结果为真。
-o:逻辑或,两个条件只要有一个成立,结果为真。

例:

#!/bin/bash

if [ -d fileA ]

   then

         echo "fileA 是目录"

elif [ -f fileA ]

   then

         echo "fileA是普通文件"

elif [ -c fileA -o -b fileA ]

   then

         echo "fileA是设备文件"

else

         echo "无法匹配fileA文件类型"

fi

(3)for…done语句

格式:for 变量 in 名字表
                     do
                           命令列表
                     done

(4)select 变量 in 关键字(选项列表)

 do
          command 1
             ... ...
          command n
        done

(5)case…esac语句,格式:

case 变量 in
                          字符串1) 命令列表1
                                               ;;;;作用是break)
                                        ...
                           字符串n) 命令列表n
                                               ;;
               esac

(6)while语句

格式:

  while 条件
          do
                  命令
          done

(7)until语句

格式:

  until 条件
         do
                 命令
         done

注:until类似while循环,不同的是until是条件返回值为假时才继续执行。

跳出循环:break和continue
break:跳出整个循环
continue:跳过本次循环,进行下次循环

(8)shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$#的值减1,用于分别处理每个参数,移出去的参数不再可用

(9)函数应用

函数的定义:
             函数名 ()
            {
                命令序列(shell所实现的功能及指令)

            }

注:函数的调用:不带()
函数名 参数1 参数2 …

函数中的变量:变量均为全局变量,没有局部变量
函数中的参数:调用函数时,可以传递参数,在函数中用$1、$2…来引用

(10)declare修饰符

declare -i 定义整型变量

declare -r 定义只读变量

declare -p 查看变量类型

declare -a 定义数组(shell脚本里只有一维数组)

declare -x 添加一条变量到环境变量中

如:declare - i  num1=20

      declare -i num2=15

      declare -i num3=${num1}+${num2}

数组操作:

如:declare -a ARR=(a b c d e f g)

      echo "${ARR[1]}"
如:echo "${ARR[*]}"

(11)local修饰符

锁定变量的使用范围(放在逻辑块中)

(12)补充
env:打印环境变量

set:打印变量

unset:删除变量

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!