一、shell
1、创建文件设置权限
① touch kb0802.sh
② chmod u+x kb0802.sh
1)#!/bin/bash
2)echo 'hello world'
3):x
③ ./kb0802.sh
2、变量类型及创建变量
① 系统变量 set方法显示所有系统变量
常用系统变量如下:
$PATH $PWD $USER $UID $HOME $HOSTNAME
②自定义变量
1)数据类型:
a. 弱类型(通常为字符串、数值)
b. 数组(【val1,…,valn】)
2)声明变量:VAR=VALUE
a. 变量命名组成规则同java常量
b. =两侧不能有空格
③ 赋值
a. A=133
b. A=henry ‘Henry Chen’ “1 and 2”
c. A=la -la
(此处加模板字符串,因打不出来,可参照下图)<=> A=$(ls -la)
④ 取消变量:unset VAR
3、变量的作用域
a. 环境变量:跨SHELL访问
b. 全局变量:当前SHELL中访问
a) 每个SHELL会话都是独立进程拥有独立PID,不同的SHELL会话之间不会相互交叉影响
b) 函数中的变量more也是全局变量
c. 局部变量:当前函数中访问
a) 函数中声明局部变量:local A=5
d. 预定义变量
a) $? 最后一次执行命令的返回状态 0表示正常,其他表示异常
b) $$ 当前进程的进程编号PID
c) $!后台运行的最后一个进程编号PID
4、输出参数
V=$(ls -l|tr -s ' '|cut -d ' ' -f9)
for v in $V
do
echo $v
done
echo $0
echo $1
echo $2
#输出参数数量
echo '参数数量:'$#
for v in $@
do
echo $v
done
5、控制台输入
① read -t SECONDS -p “提示” VAR
1)-t 超时(秒)
2)-p 提示
3)VAR 控制台输入值赋值的变量
(此处结合后续条件表达式一起举例)
6、运算符
① 算数运算符(+ - * 、 % = == !=)和算数表达式
1)运算符:同JAVA
2)表达式
a. $((EXP)) S=$((2+3))
b. $[EXP] S=$[2*3]
c. expr EXP 分布计算
注意:\*表示乘法,其他相同,运算符前后必须加空格
d. let 简单表达式
② 关系运算符和条件表达式 condition 前后有空格
通常选择b方式
1)[ condition ] -eq -ne -gt -lt -ge -le
2)test condition 同上
3)[[ condition ]] 同上
③ 逻辑运算符
1)! 非
2)-o 或
3)-a 且
7、逻辑控制
① 分支结构
if [ condition ];then
语句块
fi
if[ condition1 ]
then
语句块
elif[ condition2 ]
then
语句块
else
语句块
fi
case $VAR in
V1)
语句块
;;
V2)
语句块
;;
*)
语句块
;;
esac
② 循环
for VAR in val1...valn
do
语句块
done
for((初始化;条件;变化))
do
语句块
done
while[ condition ]
do
语句块
done
例一
例二