shell语法:
数据类型 :字符串string
创建变量: 全局变量-----环境变量 export就是全局变量 unset就可以把这个全局删除
局部变量-----本地变量
VAR=10 shell字符串也是有效的,等号左边和右边构成shell,所以空格要小心
$变量名字:取变量的值
$(变量名字):取变量的值
$(命令):取命令的结果
$((10+5)):取计算的结果
$((2#10+3)):表示二进制的10加上3
函数:
面向对象:
框架(python中叫做库):
文件名代替
* ls *.sh
? ls ????.sh
[] ls [1-9][absd].sh
命令代换符
" ` "反引号和$是一样的效果都是先执行该命令
单引号 括字符串--不能展开变量
双引号--括字符串可以将变量展开
整数判别符 test 或 [
-eq 等于 只能用于整数之间,对比成功表示正常运行返回0,错误返回1
-qt大于
-lt小于
-qe大于等于
-le小于等于
SHELL 中的特殊变量
$? 表示上一个命令退出的状态
$$ 表示当前进程编号
$0 表示当前脚本名称
$n 表示位置变量(n代表数字,n>=1)
$# 表示变量的个数,常用于循环
$*和$@ 表示参数列表
$*和$@区别,两者都表示传递给函数或脚本的所有参数,不被双引号包含时都以$1 $2 $3 $4...$n输出(参数输入空格隔开)
不同点:当他们倍双引号包含时,"$*"会将所有的参数作为一个整体,以"$1 $2 $3 $4...$n"
而$@会将各个参数分开,以$1 $2 $3 $4...$n输出
for循环
第一种
for N in 1 2 3
do
echo $N
done
或for N in 1 2 3;do echo $N;done 或者for N in {1..3};do echo $N;done
第二种
for((i=0;i<=5;i++))
do
echo "welcome $i time"
done
while循环
第一种
while True
do
echo $N
done
第二种
VAR=1
while((VAR<=3))
do
echo "welcome $VAR time"
let VAR++
done
case语句
格式
case $1 in
start)
echo "starting"
;;
*)
echo "Usage:{start | stop}"
esac
if判断
语法
if condition
then
.........
[elif xxxx
then ........]
[else
.........]
fi
交互 read
read -p "please input your name." NAME
if[ $NAME = root]
then
..........
elif[$NAME=bookfar]
then
.........
else
........
fi