shell编程相关

常用语法说明

# 获取字符串长度
str="Hello world"
echo ${#str}

# 提取字符串
echo ${str:1,3} #输出ell

#数组定义
array=(v1 v2 v3 v4 v5 v6 ...)
#或者使用下列方式
array[0]=v1
array[1]=v2

#读取数组
# @表示数组内所有元素
echo ${array[0]}
echo ${array[@]}

# 获取数组长度
echo ${#array[@]}
echo ${#array[*]}

# 获取单个元素长度
echo ${#array[n]}

# 注释

单行使用#
多行使用 

:<

参数相关

# 参数个数
$#

# 所有的参数内容
$*  # " 1 2 3 4 5 6"
$@ # "1" "2" "3" "4" "5" "6"

进程相关

# 当前进程号
$$

# 后台运行的最后一个进程id
$!

# 执行返回码
$?

算术运行

# 算术运算需要使用expr来完成,运算符中间必须分隔
# *前必须加\
# MAC的expr语法为$((express))
val=`expr 1 \* 30`

关系运算符

-ne # 不相等
-eq # 相等
-gt # 大于
-lt # 小于
-ge # 大于等于
-le # 小于等于

布尔运算符

-a # and
&& # and

-o # or
|| # or
! # not

字符串运算符

= #判断是否相等
!= #不相等
-z #判断长度是否为0
-n #判断长度是否不为0

文件相关

-b # 检测文件是否为块设备
-c # 检测文件是否为字符设备
-d # 检测文件是否为目录
-f # 检测文件是否为普通文件
-g # 检测文件是否设置了SGID位
-k # 检测文件是否设置了粘着位
-p # 检测文件是否为有名管道
-u # 检测文件是否设置了SUID位
-r #检测文件是否可读
-w #检测文件是否可写
-x #检测文件是否可执行
-s #检测文件是否为空
-e #检测文件或目录是否存在
-s #检测文件是否为socket
-l #检测文件是否为符号链接

流程控制相关

# if

if cond 
then
    statement
fi

# if else
if cond
then
    statement
else
    statement
fi

# if else-if 

if cond
then
    statement
elif cond2
then
    statement
else
    statement
# for 循环

for var in list
do
    statement
done

# 死循环
for (( ; ; ))
do

done
# while
while cond
do
    statement
done

# 死循环
while true
do

done

while :
do

done
# case 
case val in 
val1)
    statement
    ;;
val2)
    statement
    ;;
*)
    statement
    ;;
esac

Here Document

command << delimiter
    document
delimiter

# 作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给command 作为输入内容。

你可能感兴趣的:(shell编程相关)