1.熟悉shell
1.1 基本语法
# ! /bin/bash
shell必须以上面所示的开头,以#开头的语句表示注释。
1.2 添加可运行权限
chmod u+x 文件名
1.3 创建简单的shell
# !/bin/bash
echo -n "hell .$USER,today is "
date
echo "good lucky!"
2.变量
2.1 用户定义的变量
规则:
变量名=变量值
在定义变量时不能加$,再引用变量内容时要加$,给变量赋值时等号两边不能有空格,若变量本身包含空格应该加引号。
2.2 位置参数
位置参数是一种再调用shell程序的行命令中按照各自所在的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格隔开,第一个位置参数替换$1变量,以此类推。$0是是特殊的变量,它的内容是shell程序名。
2.3 预定义变量
$#:位置参数的数量。
$*:所有位置参数的内容。
$?:命令执行后返回的状态。
$$:当前进程的进程号。
$!:后台运行的最后一个进程。
$0:当前执行的进程名称。
2.4 参数置换的变量
参数置换变量有4种,这些置换变量通常和某一个位置参数相联系,根据指定的位置参数是否已经设置决定变量的取值。
1)变量=${参数-word}
如果设置了参数,则用参数的之替换变量的值,否则用word置换。
2)变量=${参数=word}
如果设置了参数,则用参数的值替换变量的值,否则用word的值替换变量,再用word替换参数的值。
3)变量=${参数?word}
如果设置了参数,则用参数的值替换变量的值,否则就显示word的内容并从shell中退出,如果省略了word则显示标准信息。
如果设置了参数,则用参数的值替换变量的值,否则不进行置换。
3. 变量表达式
3.1 数值类型
eq:等于
ge:大于等于
le:小于等于
gt:大于
lt:小于
3.2 逻辑表达式
!: 取反
-o:或
-a:与
3.3 字符类型
=:等于
!=:不等于
-n:比较字符串是否大于0
-z:比较字符串是否小于0
4. 流程控制
4.1 条件判断
1)if - then
格式:
if 命令行1
then
命令行2
fi
例:
# !/bin/bash
echo -n "请输入一个数字 "
read NUM
if [ $NUM -ge 60 ]
then
echo "你通过了考试!"
fi
2)if-then-else
格式:
if
命令行1
then
命令行2
else
命令行3
fi
例:
# !/bin/bash
echo -n "请输入一个数字 "
read NUM
if [ $NUM -ge 60 ]
then
echo "你通过了考试!"
else
echo "你没有通过考试!"
fi
3) case条件语句
格式:
case string in
exp-1)
若干命令行1
exp-1)
若干命令行2
.......*)
其他命令行
esac
例:
# !/bin/bash
echo "关机 1"
echo "重启 2"
echo "时间 3"
echo -n "请选择 "
read STRING
case $STRING in
1) shoutdown -h ;;
2) reboot ;;
3) date ;;
*) echo "输入错误!"
esac
4.2 循环控制
1)for循环
格式:
for 变量名 [in数值列表]
do
若干命令行
done
例:
# !/bin/bash
for NUM
do
echo "$NUM"
done
2)while循环
while
若干命令行1
do
若干命令行2
done
只要“若干命令1”的最后一条为真则一直执行“若干命令行2”。
例:
# !/bin/bash
SUM=0
NUM=0
while [ $NUM -le 5 ]
do
SUM=$[SUM+NUM]
NUM=$[NUM+1]
done
echo $SUM
3)until循环
until
若干命令行1
do
若干命令行2
done
与while的区别是条件为假时执行。
例:
# !/bin/bash
SUM=0
NUM=0
until [ $NUM -ge 5 ]
do
SUM=$[SUM+NUM]
NUM=$[NUM+1]
done
echo $SUM