shell编程参考:http://www.cnblogs.com/dongying/p/6262935.html
以及 https://www.cnblogs.com/clsn/p/8028337.html#auto_id_0
注:凡是不会的命令都用man 去查:例如 man test、 man echo、
基本数据类型运算:shell中主要是整数运算和浮点书(小数)运算,
整数运算两种方式:expr命令和 $[] 实现
num1=$(expr 10 % 3) #将计算结果赋值给变量
num2=`expr 10 % 3` #将计算结果赋值给变量
expr 10 + 3 #输出13
expr 10+3 #输出10+3 运算符前后必须有空格,否则就被当成字符串
#!/bin/bash
num1=10
num2=3
echo "num1 + num2=$[$num1 + $num2]" #输出num1 + num2=13
echo "num1+num2=$[$num1+$num2]"#输出num1+num2=13
浮点型数据的运算方式;
variable = $(echo "options;expression" | bc)
$()将结果保存到变量中, 而$[]是使得整数运算可以按照正常的运算符号来计算,而不必在乘号前加转义字符,或运算符前后加空格了
| 管道命令水管一头接入前一个命令的返回结果, 一头接入下一个命令。表示将前一个命令的执行结果作为后一个命令的参数输入。以上,表示将表达式作为bc的参数输入。
第二部分:if else结构:
if command #如果if后面的command正常执行,即返回的状态码为0 时候,则执行then 语句,否则不执行,直接执行fi 即if语句结束
then
commands
elif
commands
fi
test命令只能判断一下三类条件:
- 数值比较
- 字符串比较
- 文件比较
也可以将 if 后面的command 换成test命令
注:test命令和测试表达式使用标准的数学比较符号来表示字符串比较,而用文本代码来表 示数值比较。这与其它语言相比都不一样。
num1 = 100
num2 = 100
if test $num1 -eq $num2
then
echo num1等于num2
else
echo num2不等于num1
fi
也可以用双括号替代上面的test命令,这样就可以将文本表示替换成数学符号
if (( num1=num2 )) #括号中的两边都需要有空格
then
echo num1 等于num2
else
echo num2不等于 num1
使用双方括号
双方括号命令提供了针对字符串比较的高级特性。它不仅解决了使用test所带来的一系列毛病,还提供了一些test命令所没有的高级用法。双方括号命令的格式如下:
[[ expression ]]
test命令只能判断一下三类条件:
- 数值比较
- 字符串比较
- 文件比较
#!/bin/bash 例如: num = 3 if(( $num == 1 )) then echo "num=1" elif(( $num == 2 )) then echo "num=2" elif(( $num == 3 )) then echo "num=3" fi 此时,其实还有一种替代方案,那就是使用case. case variable in pattern1 | pattern2) commands1;; pattern3) commands2;; *) default commands;; esac 例如: case $num in 1) echo "num=1";; 2) echo "num=1";; 3) echo "num=3";; 4) echo "num=4";; *) echo "defaul";; esac