2019-01-25
2019-01-25 本文已影响0人
一笑忘今生
Linux系统Shell编程指南
前言
适合人群:有类似C编程基础的人
一、Shell编程介绍
- Shell解释型语言,一行一行执行,报错中断
- 可以使用Linux命令
DATE_01=`date`
DATE_02=$(date)
二、Shell技术实战
1.变量、注释和输出
#声明变量
data=1.666
#-r开启转义 \n换行 \r不换行 双引号可引用变量
echo -r "output${data}\n"
#-左对齐 +右对齐 .1保留一位小数四舍五入
printf "%-2.1f" $data
2.字符串、数组、字典
#必须先声明
declare -A dic
dic=([key1]="value1" [key2]="value2" [key3]="value3")
#打印指定key的value
echo ${dic["key1"]}
#打印所有key值
echo ${!dic[*]}
#打印所有value
echo ${dic[*]}
#字典添加一个新元素
dic+=([key4]="value4")
#遍历key值
for key in $(echo ${!dic[*]})
do
echo "$key : ${dic[$key]}"
done
#数组
list=("value1" "value2" "value3")
#打印指定下标
echo ${list[1]}
#打印所有下标
echo ${!list[*]}
#打印数组下标
echo ${list[*]}
#数组增加一个元素
list=("${list[@]}" "value3")
#按序号遍历
for i in "${!arr[@]}"; do
printf "%s\t%s\n" "$i" "${arr[$i]}"
done
#按数据遍历
for NUM in ${ARR[*]}
do
echo $NUM
done
3.流程控制结构
#if
a=1
if (( $a<2 ))
then
echo $a
#elif 可选
#else 可选
fi
#一行执行 if(( $a<2 ));then echo $a;fi
#for 类C注意括号里变量不需要加$
for(( i=1;i<3;i++ ))
do
echo $i
done
#一行执行 for(( i=1;i<3;i++ ));do echo $i;done
#while
t=1
while(( t<3 ))
do
echo $t
((t=t+1))) #注意shell加法使用,或t=`expr $t+1`
done
#一行显示 while(( $t<3 ));do echo $t;((t=t+1));done
4.函数和引用
#函数
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
#执行函数
demoFun
echo "-----函数执行完毕-----"
参考表
函数内置变量表
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
关系运算符
运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true。 |
-ne | 检测两个数是否不相等,不相等返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 |
逻辑运算符
运算符 | 说明 |
---|---|
&& | 逻辑的 AND |
Ⅱ | 逻辑的 OR |
三、生产环境使用规范
作者建议
将技术实战打印下来,定期默写复习,用时信手拈来!编码规范只能使用中慢慢养成。
点击-在线执行shell
相关教程:
个人编辑
作者:一笑忘今生