中国建设网站的公司/企业网站优化排名
目录
Shell运算符
算术运算符
布尔运算符
逻辑运算符
字符串运算符
文件测试运算符
echo打印数据
test命令
数字
字符串
文件测试
Shell流程控制
if
case
for
while
break
continue
Shell函数
Shell运算符
-
算术运算符
-
#! /bin/basha=20 b=10val=`expr $a + $b`#不是单引号 是esc下面的符号(英文输入法) echo "a + b : $val"val=`expr $a - $b` echo "a - b : $val"val=`expr $a \* $b` echo "a * b : $val"val=`expr $a / $b` echo "a / b : $val"val=`expr $a % $b` echo "a + b : $val"if [ $a == $b ] thenecho "a 等于 b" elseecho "a 不等于 b" fiif [ $a != $b ] thenecho "a 不等于 b" elseecho "a 等于 b" fi
- expr是一款表达式计算工具,使用它能完成表达式的求值操作
-
- 关系运算符
-
- 关系运算符只支持数字,不支持字符串,除非字符串的值是数字
-
#! /bin/basha=10 #不能敲成 a = 10 这样a会被识别为一个命令 b=20if [ $a -eq $b ] #不能敲成[$a -eq $b],需要空格,不然有语法错误 thenecho "$a -eq $b a 等于 b" elseecho "$a -eq $b a 不等于 b" fiif [ $a -ne $b ] thenecho "$a -ne $b a 不等于 b" elseecho "$a -ne $b a 等于 b" fiif [ $a -gt $b ] thenecho "$a -gt $b a 大于 b" elseecho "$a -gt $b a 小于 b" fiif [ $a -lt $b ] thenecho "$a -lt $b a 小于 b" elseecho "$a -lt $b a 大于 b" fiif [ $a -ge $b ] thenecho "$a -ge $b a 大于或等于 b" elseecho "$a -ge $b a 小于 b" fiif [ $a -le $b ] thenecho "$a -le $b a 小于或等于 b" elseecho "$a -le $b a 大于 b" fi
-
布尔运算符
-
#! /bin/basha=10 b=20if [ $a != $b ] thenecho "$a != $b: a 不等于 b" elseecho "$a == $b: a 等于 b" fiif [ $a -lt 100 -a $b -gt 15 ] thenecho "$a 小于 100 且 $b 大于 15 :返回 true" elseecho "$a 小于 100 且 $b 大于 15 :返回 false" fiif [ $a -lt 100 -o $b -gt 100 ] thenecho "$a 小于 100 或 $b 大于 100:返回 true" elseecho "$a 小于 100 或 $b 大于 100:返回 false" fiif [ $a -lt 5 -o $b -gt 100 ] thenecho "$a 小于 5 或 $b 大于 100 :返回 true" elseecho "$a 小于 5 或 $b 大于 100:返回 false" fi
-
-
逻辑运算符
-
#! /bin/basha=10 b=20if [[ $a -lt 100 && $b -gt 100 ]] thenecho "返回 true" elseecho "返回 false" fiif [[ $a -lt 100 || $b -gt 100 ]] thenecho "返回 true" elseecho "返回 false" fi
-
-
字符串运算符
-
#! /bin/basha="abc" b="efg"if [ $a = $b ] thenecho "$a = $b : a 等于 b" elseecho "$a = $b : a 不等于 b" fiif [ $a != $b ] thenecho "$a != $b : a 不等于 b" elseecho "$a != $b : a 等于 b" fiif [ -z $a ] thenecho "-z $a : 字符串长度为0" elseecho "-z $a : 字符串的长度不为0" fiif [ -n $a ] thenecho "-n $a : 字符串长度不为0" elseecho "-n $a : 字符串长度为0" fiif [ $a ] thenecho "$a : 字符串不为空" elseecho "$a : 字符串为空" fi
-
-
文件测试运算符
-
#! /bin/bashfile="/root/test.sh"if [ -r $file ] thenecho "文件可读" elseecho "文件不可读" fiif [ -w $file ] thenecho "文件可写" elseecho "文件不可写" fiif [ -x $file ] thenecho "文件可执行" elseecho "文件不可执行" fiif [ -f $file ] thenecho "文件为普通文件" elseecho "文件为特殊文件" fiif [ -d $file ] thenecho "文件是个目录" elseecho "文件不是个目录" fiif [ -s $file ] thenecho "文件不为空" elseecho "文件为空" fiif [ -e $file ] thenecho "文件存在" elseecho "文件不存在" fi
-
echo打印数据
- Shell的echo指令与PHP的echo指令类似,都用于字符串的输出
-
#! /bin/bash## 显示普通字符串 echo "Hello world"## 显示转义字符 echo "\"Hello world\""## 显示变量 name="xyx" echo "$name Hello world"## 显示换行 echo -e "OK! \n" echo "Hello world"## 显示不换行 echo -e "OK! \c" echo "Hello world"## 显示结果定向至文件 echo "Hello world" > myfile## 原样输出字符串 echo '$name\"'## 显示命令执行结果 echo `date`
test命令
- Shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
-
数字
-
参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真
-
-
字符串
-
参数 说明 = 等于则为真 != 不相等则为真 -z 字符串 字符串的长度为0则为真 -n 字符串 字符串的长度不为0就为真
-
-
文件测试
-
参数 说明 -e 文件名 如果文件存在则为真 -r 文件名 如果文件存在且可读则为真 -w 文件名 如果文件存在且可写则为真 -x 文件名 如果文件存在且可执行则为真 -s 文件名 如果文件存在且至少有一个字符为真 -f 文件名 如果文件存在且为普通文件则为真 -c 文件名 如果文件存在且为字符型特殊文件则为真 -b 文件名 如果文件存在且为块特殊文件则为真 -d 文件名 如果文件存在且为目录则为真
-
-
#! /bin/bash#比较 num1=100 num2=100if test $[num1] -eq $[num2] thenecho "两个数相等!" elseecho "两个数不相等!" fi
Shell流程控制
-
if
-
if condition1 thencommand1 elif condition2 thencommand2 elsecommandN fi
-
-
case
- Shell case语句为多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令
-
case 值 in 模式1)command1command2...commandn;; 模式2)command1command2...commandn;; esac
-
#! /bin/bashecho "输入1到4的数字:" echo "你输入的数字为:" read num case $num in1) echo "你选择了1";;2) echo "你选择了2";;3) echo "你选择了3";;4) echo "你选择了4";;*) echo "你没有输入1到4之间的数字;; esac
-
for
- 当变量值在列表里,for循环即执行一次所有命令,使用列表名获取列表中的当前取值
- 命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名
- in列表是可读的,如果不用它,for循环使用命令行的参数
-
for var in item1 item2 ... itemN docommand1command2...commandN done
-
#! /bin/bashfor loop in 1 2 3 4 5 doecho "The value is: $loop" donefor str in "This is a string" doecho $str done
-
while
- while循环用于不断执行一系列命令,也用于从输入文件 中读取数据;命令通常为测试条件
-
while condition docommand done#无限循环 while true docommand done
-
#Bash let 命令,它用于执行一个或者多个表达式,变量计算中不需要加上$来表示变量 #! /bin/bashi=1 while(($i<=5)) doecho $ilet "i++" done
-
break
- break命令允许跳出所有循环(终止执行后面的循环)
-
#! /bin/bashwhile : doecho -n "输入1到5之间的数字"read aNumcase $aNum in1|2|3|4|5) echo "你输入的数字为 $aNum!";;*) echo "你输入的数字不是1到5之间的!游戏结束"break;;esac done
-
continue
- contiue命令不会跳出所有循环,仅仅跳出当前循环
-
#! /bin/bashwhile : doecho -n "输入1到5之间的数字"read aNumcase $aNum in1|2|3|4|5) echo "你输入的数字为 $aNum!";;*) echo "你输入的数字不是1到5之间的!"continueecho "游戏结束";;esac done
Shell函数
- Linux shell 可以用户定义的函数,然后在shell脚本中可以随便调用
- 可以带function fun()定义,也可以直接fun()定义,不带任何参数
- 参数返回,可以显示加;return 返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255)
-
#! /bin/bash## 第一个函数---------------------------------------- demoFun(){echo "这是我的第一个shell函数!" }echo "------------函数开始执行------------" demoFun echo "------------函数执行完毕------------"## 函数返回值--------------------------------------- funWithReturn(){echo "这个函数会对输入的两个数字进行相加运算..."echo "输入第一个数字:"read num1echo "输入第二个数字"read num2echo "两个数字分别为$num1和$num2!"return $(($num1+$num2)) }funWithReturn #函数返回值在调用该函数后通过 $? 来获得 echo "输入的两个数字之和为 $? !"## 函数参数----------------------------------------- funWithParam(){echo "第一个参数为$1"echo "第二个参数为$2"echo "第三个参数为$3"echo "第十个参数为$10"echo "第十个参数为${10}"echo "第十一个参数为${11}"echo "参数总共有$#个"echo "作为一个字符串输出所有参数 $* " }funWithParam 1 2 3 4 5 6 7 8 9 10 11 12 13 14