|
1.基本语法及变量的使用方法。
shell脚本第一行:#!/bin/bash #用作shell命令的完全路径:显示后期命令以哪种shell来执行命令
除了上述外以#开头的皆为注释
shell进程创建时一般以.sh结尾
创建步骤:
第一步:创建一个包含命令和控制结构的shell文件。
第二步:修改这个文件的权限使它可以执行。
使用chmod u+x
第三步:执行
方法1:./example.sh
方法2:使用绝对路径
方法3:bash example.sh
变量是shell传递数据的一种方法,变量是用来代表每个值的符号名。
shell有两种变量:临时变量和永久变量
临时变量:shell程序内部定义的,使用范围仅限于定义它的程序,对其他程序不可见。包括:用户自定义变量、临时变量、预定义变量。
永久变量是环境变量,其值不随shell脚本的执行结束而消失。
例:$PATH
用户自定义变量:由字母或下划线打头,由字母、数字或下划线组成,并且大小写字母意义不同。变量名长度没有限制。
使用变量值时,要在变量名前面加前缀 "$"。
变量赋值:赋值号"="两边没有空格。
例如:A=aaa
例:将一个命令的执行结果赋给变量:
A=`date`
echo $A
B=$(ls -l)
echo $B
列出所有的变量
set命令
例:set | grep DAY
单引号和双引号的区别:
单引号之间的内容原封不动地指向了变量。
双引号取消了空格的作用,特殊符号的含义保留。
删除变量
unset NAME
位置变量和特殊变量
位置变量:Shell解释执行用户的命令时,将命令行的第一个字作为命令名,其他字作为参数。由出现在命令行上的位置确定的参数称为位置参数。使用$N来表示.
例如:./example.sh file1 file2 file3
$0表示这个程序的文件名 example.sh
$N 这个程序的第N个参数
特殊变量:有些变量是一开始执行script脚本时就会设定,且不能修改,但我们不叫系统变量,而叫特殊变量。这些变量当一执行程序时就有了,用户无法将一般的系统变量设定成只读,以下是一些特殊变量:
$* #这个程序的所有参数
$# #这个程序的参数个数
$$ #这个程序的PID
$! #执行上一个后台程序的PID
$? #执行上一个指令的返回值
Read命令:
作用:从键盘读入数据,赋给变量
例:read a b c
1 32 3
echo $a $b $c
expr命令:
作用:shell变量的算术运算。
格式:expr 表达式
例:expr 3 + 5 #注意运算符中间必须要有空格
变量测试语句:
test
格式:test 测试条件 #测试范围:整数,字符串,文件。
字符串和变量:
test str1==str2 #是否相等
test str1!=str2 #是否不等
test str1 #测试是否为非空
test -n str1 #测试是否为空
测试整数:
test int1 -eq int2 #==
test int1 -ge int2 #>=
test int1 -gt int2 #>
test int1 -le int2 #<=
test int1 -lt int2 #<
test int1 -ne int2 #!=
测试文件:
test -d file #测试是否为目录
test -f file #测试是否为文件
test -x file #测试是否可执行
test -r file
test -w file
test -e file #测试是否存在
test -s file #测试大小是否为空
以上都可以省略test,写成这种形式:[ -s file ].
流程控制:
语法:
if 条件1
then
语句
elif 条件2
then
语句
else
语句
fi
扩展;分号,表示两个命令写在同一行。互不影响
&&表示前一个命令成功才执行下一个命令
case 流控制语句:
适用于多分支
格式:
case 变量 in
字符串1) 命令列表1
;;
...
字符串n) 命令列表n
*) 命令列表n+1
;;
esac
循环语句for...done语句
格式:
for 变量 in 名字表
do
命令列表
done
while循环语句
格式:
while 条件
do
命令
done
使用(())扩展shell中算数运算的使用方法,oeO] NY INNH N[
_IN[O] NY INNH [\[\N[
_IN[O |