快速掌握Shell编程
基础
1.系统识别及shell版本 #!/bin/bash
2.保存后修改文件执行权限 chmod 755 myShell.sh
3.注释 #注释内容 多行注释 :<<!注释内容。。。!
变量
变量命名不能以数字开头 赋值时=两边不能有空格
1.系统变量 $HOME $PATH 查看所有变量 set
2.定义变量 A=100 使用变量 echo"A=$A"
3.撤销变量 unset A
4.静态变量 readonly A=100 静态变量不能使用unset撤销
5.将命令返回值赋值给变量 A=`ls -la` 或 A=$(ls -la)
6.环境变量(全局变量)
定义环境变量
USER_HOME=/usr/home export USER_HOME
刷新配置文件 source /etc/profile
7.位置参数变量
$0 执行脚本
$n 第n个参数 10以上需要使用${10}
$* 整体输出位置参数
$@ 分别输出位置参数
$# 参数个数
8.预定义变量
$$ 当前进程的进程号PID
$! 后台运行的最后一个进程的进程号PID
$? 最后依次执行命令返回状态,0则命令执行正确,其他则命令执行不正确
后台运行脚本 ./myShell.sh & ctrl+c可退出
运算符
1.方式1 RESULT=$(((2+3)*4))
2.方式2(推荐) RESULT=$[(2+3)*4]
3.方式3 TEMP=`expr 2 + 3` RESULT=`expr $TEMP \* 4`
流程控制
1.比较判断符
比较:字符串比较= 小于-lt 小于等于-le 等于-eq 大于-gt 大于等于-ge 不等于-ne
权限判断:是否有读权限-r 是否有写权限-w 是否有执行权限-x
文件类型判断:文件是否存在-e 是否是常规文件-f 是否是目录-d
2.if条件判断 []中两侧必须有空格,条件为真返回true 反之返回false
if [ 条件语句1 ] then 程序1 elif [ 条件语句1 ] then 程序2 fi
3.case条件判断
case $1 in "条件1") 程序1 ;; "条件2") 程序2 ;; *) 不满足之前条件的程序 ;; esac
4.for遍历循环
//遍历 for 变量 in 值1 值2 值3··· do 程序 done //循环 SUM=0 for((i=1;i<=100;i++)) do SUM=$[$SUM+$i] done echo "result=$SUM"
5.while循环
SUM=0 i=0 while [ $i -le $1 ] do SUM=$[$SUM+$i] i=$[$i+1] done echo "result=$SUM"
read读取控制台输入
带提示信息-p 限时输入-t
read -t 10 -p "Insert a Num" NUM echo "$NUM"
函数
1.系统函数basename
basename /home/local/test.txt 结果为test.txt
basename /home/local/test.txt .txt 结果为test
2.系统函数dirname
dirname /home/local/test.txt 结果为/home/local
3.自定义函数
function getSUM(){ SUM=$[$n1+$n2] echo "$n1\+$n2=$SUM" } read -p "1st Num" n1 read -p "2nd Num" n2 getSUM $n1 $n2