2019-01-25

2019-01-25  本文已影响0人  一笑忘今生

Linux系统Shell编程指南

前言

适合人群:有类似C编程基础的人

一、Shell编程介绍

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

相关教程:

个人编辑
作者:一笑忘今生

上一篇下一篇

猜你喜欢

热点阅读