shell 二

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

posted @ 2021-01-11 11:15  晴晴小可爱的小弟  阅读(114)  评论(0编辑  收藏  举报