变量

命名规定:

  • 只能应用英文字母、数字与下划线,首个字符不能以数字结尾
  • 两头不能有空格,容许应用下划线
  • 不能应用标点符号
  • 不能应用 bash 里的关键字(可用help命令查看保留关键字)

定义与应用变量:

# 定义惯例变量[root@xiaojw ~]# name="leo"[root@xiaojw ~]# echo $nameleo# 定义只读变量:不能被更改和删除[root@xiaojw ~]# name=tom[root@xiaojw ~]# readonly name[root@xiaojw ~]# unset name-bash: unset: name: cannot unset: readonly variable# 删除变量[root@xiaojw ~]# age=18[root@xiaojw ~]# echo $age18[root@xiaojw ~]# unset age[root@xiaojw ~]# echo $age

变量类型

  • 字符串:name="leo"
  • 拼接字符串:greeting="hello,"$name"!"
  • 数组:array=(v1, v2, v3)
    • 取数组中某个值:value=${array}[n]
    • 独自赋值:array[n]=value

条件分支

if

if conditionthen    command1    command2    ……fi

循环

for

for var in 取值范畴;do    command1    command2    ……done

while

while condition;do    commanddone

bash 的根本应用

read

  • 用于从终端或者文件中读取输出的外部命令
  • 读取整行输出
  • 每行开端的换行符不被读入

应用:

  • 从规范输出读取输出并赋值给变量\
    read var
  • 从规范输出读取多个内容\
    read var1 var2 var3
  • 不指定变量(默认赋值给 REPLAY)\
    read

脚本参数传递

  • $0:脚本名称
  • $1-$n:获取参数
  • $#:传递到脚本的参数个数
  • $$:脚本运行的以后过程 id 号
  • $*:以一个单字符串显示所有向脚本传递的参数
  • $?:显示最初命令的退出状态;0 示意没有谬误,其余任何值表明有谬误

算术运算

[root@xiaojw ~]# a=10[root@xiaojw ~]# b=20# 加法[root@xiaojw ~]# expr $a + $b30# 减法[root@xiaojw ~]# expr $a - $b-10#乘法[root@xiaojw ~]# expr $a * $b200# 除法;后果只保留整数局部[root@xiaojw ~]# expr $a / $b0# 取余[root@xiaojw ~]# expr $a % $b10# 复制a=$b# 相等[ $a == $b ]# 不等于[ $a != $b ]# -eq:检测相等[ $a -eq $b ]# -ne:检测不相等[ $a -ne $b ]# -gt:检测右边是否大于左边的值[ $a -gt $b ]# -lt:检测是否小于[ $a -lt $b ]# -ge:检测是否大于等于[ $a -ge $b ]# -le:检测是否小于等于[ $a -le $b ]

学习材料

阮一峰-Bash 脚本教程