RedHat 7.1 ------------ Shell脚本基础知识

写shell脚本时需要在文件头部 #!/bin/sh 来指定解释器,以下的环境为rhel-7.1

1.变量

1.1 本地变量

   变量名=值  eg:  aa=123

   注意:不会影响子shell,变量名字以数字,字母,下划线组成,不能以数字开头,等号两边不可有空格,当值有空格时用引号引起例如:aa=' sasas'

   read -p "请输入一个值"  aa  用户交互输入将值赋值给aa


 

1.2 环境变量

   export 变量名=值

   和本地变量的区别是可以影响子shell

   env 命令可以查看系统所有的环境变量

常见的环境变量

$USER 当前的用户

$UID 当前用户的UID

$HOME 当前用户家目录

$HISTSIZE 历史命令的存储最大值

$HISTFILE 历史命令的存储位置

$PATH 当输入的命令未指定路径时,则在默认路径查找path输出的为默认路径

$PS1 该环境变量决定的是  的提示信息

$PS2 该环境变量决定的是反斜线后的提示符


 

1.3 位置变量

 $0 表示脚本名称

 $1 表示第一个参数,以此类推,当成为两位数及其以上需要用大括号例如${10}代表第10个参数

 $# 表示参数的个数

 $? 表示所有参数的值

写如下脚本进行测试

#!/bin/sh

# test.sh

echo "one is : $1"

echo "three is : $3"

echo "two is : $2"

echo "ALL is :$# There are: $*"

给文件增加执行权限 chmod +x ./test.sh

./test.sh bob tom jerry

输出

 


2.返回值

 $? 表示返回值

 不仅可以表示命令等的正确错误还可以表示逻辑错误

 正确返回0 不正确返回非0

例如 ifconfig 执行完毕则 echo $? 返回 0

   asssasasa 执行完毕 echo $? 返回 123 非0

$? 的值一直不断的在变化

逻辑错误例如: cat /etc/passwd | grep tomxxx 当无结果时 $?的值为非0 当有结果时,结果为0


3.数值运算

echo 1+2    输出 1+2

echo $((1+2)) 输出 3

echo $[1+2]  输出 3

 

let aa=1+2 

echo $aa    输出3

 

aa=1+2 

declare -i aa 

echo $aa     输出3

 

当除法计算小数时候 echo 'scale=4;2/3' | bc 输出 .6666 scale=n代表保留小数后n位


4.对比

 [  比较 ]   [[  比较 ]]  

 第二种 比 第一种支持正则等

数值的比较 -eq 等于 -gt 大于 -ge 大于等于

       -ne 不等于  -lt 小于 -le 小于等于

字符串的比较 == <= >= != > <

文件属性 [ -属性 /path/file ]  属性有 r w x f d l b e

连接符 && ||


5.判断语句 

5.1 if判断

  if 条件; then

    命令1

    命令2

  elif 条件2; then

    命令1

    命令2

  elif ......

  else 

    命令1

    命令2

  fi

5.2 case判断

  case 变量 in

   值1) 

     命令1

     ;;

   值2)

     命令2

     ;;

   值x)

     命令x

     ;;

   *) 

     命令

     ;;

  esac


 

6.循环

6.1 for循环

 for 变量 in 值1 值2 值3

 do

   循环内容

 done

6.2 while循环

 while 变量

 do

  循环内容

 done 

 while循环可以用来读取文件的内容

 eg:输出/etc/passwd文件的内容

while read aa

    do

     echo $aa

    done < /etc/passwd

 


7.函数

function 函数名(){

 

函数体

 

}

 

调用直接使用 函数名即可

eg: test.sh

#!/bin/sh

function test(){

echo "this is a test"

}

test

输出 this is a test

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值