###--------------------shell基本语法------------------------
#创建文件设置权限
①touch xxx.sh
#内部格式
#!/bin/bash 是指此脚本使用/bin/bash来解释执行
echo 'hello world'
....
....
②chmod u+x xxx.sh
③./xxx.sh
#变量
①系统变量 如:$UID,$HOME,$PATH,$HOSTNAME等
②自定义变量(通常指shell内部)
1)数据类型:
a.弱类型(通常为字符串、数值)
b.数组([val1,...,valn])
2)变量的声明:
a.语法上不同于java,= 两侧不能有空格,且不用以;结尾
b.弱类型的声明方式:a=4 / a='hello' (shell不区分单双引号)
c.数组的声明方式:
a=henry 'henry chen' '1 and 2' / a=`ls -la` <=> a=$(ls-la)
(数组在声明上可以带入命令集,用``格式进行变量赋值)
如声明数组:V=`ls -l | tr -s ' ' | cut -d ' ' -f9`
3)取消变量:unset VAR
4)变量的作用域:
a.环境变量:跨域访问,指shell脚本外部,程序配置环境,如 $JAVAHOME
b.全局变量:当前shell内自定义的变量,函数中的变量默认也是全局变量,
并且每个shell会话都是独立进程拥有独立PID,不同shell会话之间不会交叉相互影响
c.局部变量:当前函数中访问,以local为标识,如:local a=5
d.预定义变量
a.$? 最后一次执行命令的返回状态 0 表示正常,其他表示异常
b.$$ 当前进程的进程编号PID
c.$! 后台运行的最后一个进程编号PID
d.$# 命令行中位置参数的个数如:echo '参数数量: ' $#
e.$* 所有位置参数的内容(整体)
f./$@ 所有位置参数的内容(个体)
g.$O 当前执行的进程/程序名
h.$n int(n>0)表示第几个参数 如:echo $0 echo $1 echo $2
预定义便量的应用:
for v in $@
do
echo $v
done
[root@master ~]# ./kb0801.sh hello shell
hello
shell
#注释
①单行注释: #
②多行注释: :<<! !
#命令行输入:read 命令
① read -t seconds -p "string" var
② -t 代表超时(秒)
③ -p 提示语句
④ var 代表存值的变量
#运算符
①算术运算符(+ - * / % =)和算数表达式
#算数表达式
a.$((EXP)) S=$((2+3))
b.$[EXP] S=$[2+3]
c.expr EXP 分布计算
注意:\*表示乘法(expr无法识别/ * % 必须要通过\转义),其他相同,
运算符前后必须加空格 S=`expr 2 \* 3`
d.let 简单表达式 如:let S=2+3
②关系运算符和条件表达式condition前后有空格
-eq -gt -lt -ge -le
[ condition ] / test condition / [[ condition ]]
③逻辑运算符
1)! 非
2)-o 或
3)-a 且
#逻辑控制
#分支结构
#普通if
if [ condition ]
then
语句块
fi
###then如果提上来的话需要加上;号
if [ condition ];then
语句块
fi
#多条件if
if [ condition1 ]
then
语句块
elif [ condition2 ]
then
语句块
else
语句块
fi
#case
case $var in
v1)
语句块
;;
v2)
语句块
;;
*)
语句块
;;
esac
#循环
#普通for循环
for var in val1...valn
do
语句块
done
#条件for循环
for ((初始化;条件;变化))
do
语句块
done
#while循环
while [ condition ]
do
语句块
((var++)) 变量var自增
done
#系统命令
#(1) dirname path 获取目录
[root@master ~]# basename /opt/install/java/jdk-8u111-linux-x64.tar.gz
jdk-8u111-linux-x64.tar.gz
#(2) basename path 获取文件名
[root@master ~]# dirname /opt/install/java/jdk-8u111-linux-x64.tar.gz
/opt/install/java
轻松掌握入门级shell基本语法!
最新推荐文章于 2024-03-25 14:12:46 发布