Skip to content

Shell 脚本

下面介绍一下 Shell 脚本的常用写法

在 shell 脚本的开头,都需要有如下的开头,这行代码的主要作用是:指定默认情况之下运行脚本的解释器,

https://zhuanlan.zhihu.com/p/666028747

sh
#!/bin/bash

一、注释

sh
# 单行注释
sh
:<<EOF
注释内容
EOF

二、变量

sh
# 定义变量
name=''

三、字符串

字符串可以用单引号,也可以用双引号,也可以不用引号。单引号与双引号的区别:

  • 单引号中的内容会原样输出,不会执行、不会取变量;
  • 双引号中的内容可以执行、可以取变量;
sh
name='coding'
name1='${name}'
# 输出:${name}
echo ${name1};

name2="${name}"
# 输出:coding
echo ${name2};

# 获取字符串的长度
length=${#name};
echo ${length};

# 截取字符串
echo ${name:0:5}

四、数组

元素之间使用空格进行隔开

sh
list=(1 'coding 666' 2);

五、expr

expr 命令用来求表达式的值,格式为:

sh
expr 表达式

# 获取表达式的结果
`expr 表达式`

$(expr 表达式)

5.1 字符串表达式

sh
str='Hello world' 

# 获取字符串的长度,将其保存到 strLength 变量里面             
strLength=$(expr length "$str")
echo ${strLength}

# 获取指定字符串在目标字符串之中的下标                       
strIndex=$(expr index "${str}" l)
echo ${strIndex}

# 从指定位置开始,截取指定长度的字符串                       
subStr=$(expr substr "$str" 2 3)
echo ${subStr}

5.2 整数运算符

expr 支持普通的算术操作,不过请注意,对于 * / % 都需要使用 \ 进行转义

sh
a=1
b=2
echo `expr $a + $b`

echo `expr $a \* $b`

echo `expr \( $a + $b \) / \( $b - $a \)`

5.3 逻辑运算符

|: 或运算,运算两边只要有一个非 0 即可,会按照顺序返回非0的参数值,即如果左边为0,右边不为0,则返回右边

&:与运算,运算两边都必须非0,如果两边都是非0的,返回结果实际上是第一个参数

< <= > >= !=

sh
a=1
b=0
echo `expr $a \| $b`
echo `expr $a \& $b

六、test

test 命令用来判断文件类型,以及对变量做比较,其中 0 表示真,非0 表示假。其中 test 命令用 exit code 返回结果

参数意义
-e文件是否存在
-f是否是文件
-d是否是目录

七、判断语句

sh
if condition
then
	语句
fi

八、循环语句

九、函数

十、exit命令