1、变量
定义变量时,变量名不加美元符号,如:name="zhang"。注意,变量名和等号之间不能有空格。
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:echo $name
字符串可以用单引号,也可以用双引号,也可以不用引号。单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。双引号里可以有变量,双引号里可以出现转义字符。
2、传递参数
向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
特殊字符用来处理参数:$# 传递到脚本的参数个数。
3、数组
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:array_name=(value1 ... valuen)
也可以使用下标来定义数组:array_name[0]=value0
读取数组:${array_name[index]}
4、基本运算符
使用 关键字expr 可以进行简单计算:echo `expr 2 + 2`
表达式和运算符之间要有空格,(运算符两边必须有空格),例如 2+2 是不对的,必须写成 2 + 2
完整的表达式要被 反引号` ` 包含。
条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
if [ $a == $b ]
then
echo "a 等于 b"
fi
5、打印echo
echo命令,用于字符串的输出,一般输出内容用双引号或者不使用任何符号,单引号会原样输出包括变量。$符号表示取变量值。比如:echo "my name is $name" 结果:my name is zhangsan
而单引号会原样输出,echo 'my name is $name' 结果:my name is $name
打印时间:echo `date` 注意:` 这个字符是Esc 下面那个键输入的。反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。单引号把Linux命令视为字符集合。反引号会强迫执行Linux命令。
Linux可以直接输出时间比如:date "+%Y-%m-%d %H:%M:%S"
一般 “-”减号表示短参数 “--”两个减号表示长参数 “+”一般都是特殊用法,也就是个性化用法。 加号和减号变成了开关标志。
在date命令里,加号代表输出格式的说明。
但是直接:echo date "+%Y-%m-%d %H:%M:%S" 结果为:date +%Y-%m-%d %H:%M:%S
把表达式当成字符串原样输出了,我们可以使用反引号,让我们想要的表达式先执行。
echo `date "+%Y-%m-%d %H:%M:%S"` 结果为:2019-12-17 12:59:15
> 输入(覆盖原内容)
>> 追加(原内容基础上追加)
2>&1 的意思就是将标准错误重定向到标准输出。1表示标准输出,2表示错误输出。
比如:java -jar test.jar >>log 2>&1
表示将test.jar的执行内容打印到log中,当这条语句报错,比如根本就不存在test.jar文件,这时因为2>&1会把执行命令的异常信息重定向到标准输出,也就是把错误信息也放到log中。
6、test 命令
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
-eq 等于则为真,-ne不等于则为真,-gt大于则为真,-ge大于等于则为真,-lt小于则为真,-le小于等于则为真
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi