目录
引言
在现代操作系统中,Shell 脚本是一种强大的自动化工具,能够高效地处理系统管理和任务执行。通过使用数组、表达式、运算符和流程控制语句,用户可以编写出灵活而复杂的脚本,以满足各种需求。本文将介绍 Shell 中的数组用法、算术与逻辑运算、流程控制以及函数的定义与调用,帮助读者深入理解并掌握 Shell 脚本的基本构建块。
一、Shell变量——数组
- bash支持一维数组(不支持多维数组)。
- 在Shell中用括号来表示数组,数组元素用空格符号分开
数组名=(值1 ... 值n)
- 可以单独定义数组的各个元素。
- 可以不使用连续的下标,而且下标的范围没有限制。
- 读取数组元素值的语法格式为:
${数组名[下标]}
- 采用以下用法获取数组元素的个数:
${#数组名[@]}
- 以下方法用于取得数组单个元素的长度:
${#数组名[n]}
①创建一个脚本文件
vim zh01.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
③启动zhh.sh 脚本文件
bash zh01.sh
或./zh01.sh 用./zh01.sh访问记得加执行的权限哦。chmod +x zh01.sh
二、表达式与运算符——表达式
(一)算术表达式
- bash自身并不支持简单的数学运算,但可通过awk 和expr等命令来实现数学运算。
- expr最为常用,使用它能够完成表达式的求值操作。
- 更为简单的方式是使用$[]表达式进行数学计算
- $(( )) 也是常用的方式
①创建一个脚本文件
vim zh02.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
result_expr=$(expr 5 + 3)
echo "使用 expr 计算 5 + 3 = $result_expr"
result_brackets=$[5+3]
echo "使用 \$[] 计算 5 + 3 = $result_brackets"
result_double=$((5+3)) echo "使用 \$(( )) 计算 5 + 3 = $result_double"
③启动zh02.sh 脚本文件
bash zh02.sh
(二)逻辑表达式
- 逻辑表达式主要用于条件判断,值为true(或0)表示结果为真;值为false(非零值)表示结果为假。
- 通常使用test命令来判断表达式的真假。
①创建一个脚本文件
vim zh03.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
test 5 -gt 3 echo $? # 输出 0,表示为真
test 3 -gt 5
echo $? # 输出 1,表示为假
③启动zh03.sh 脚本文件
bash zh03.sh
- Linux每个版本中都包含test命令,但该命令有一个更常用的别名,即左方括号“[”。
- 当使用左方括号而非test时,其后必须始终跟着一个空格、要评估的逻辑表达式、一个空格和右方括号,右方括号表示所需评估表达式的结束。逻辑表达式两边的空格是必需的。
①创建一个脚本文件
vim zh04.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
[ 5 -gt 3 ]
echo $? # 输出 0,表示为真
[ 3 -gt 5 ]
echo $? # 输出 1,表示为假
③启动zh04.sh 脚本文件
bash zh04.sh
(三)算术运算符
- +:加法
- -:减法
- *:乘法
- /:除法
- %:取余
- =:赋值
①创建一个脚本文件
vim zh05.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
val1=10
val2=3
result_add=$((val1 + val2))
echo "加法:$val1 + $val2 = $result_add"
result_sub=$((val1 - val2))
echo "减法:$val1 - $val2 = $result_sub"
result_mul=$((val1 * val2))
echo "乘法:$val1 * $val2 = $result_mul"
result_div=$((val1 / val2))
echo "除法:$val1 / $val2 = $result_div"
result_mod=$((val1 % val2))
echo "取余:$val1 % $val2 = $result_mod"
③启动zh05.sh 脚本文件
bash zh05.sh
(四)整数关系运算符
①创建一个脚本文件
vim zh06.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
a=5 b=3
if [ $a -eq $b ]; then
echo "$a 等于 $b"
else
echo "$a 不等于 $b"
fi
.............
..............
if [ $a -ge $b ]; then
echo "$a 大于或等于 $b"
else
echo "$a 小于 $b"
fi
if [ $a -le $b ]; then
echo "$a 小于或等于 $b"
else
echo "$a 大于 $b"
fi
③启动zh06.sh 脚本文件
bash zh06.sh
(五)字符串检测运算符
①创建一个脚本文件
vim zh07.sh
②打开脚本文件后,将以下内容复制进去,然后输入 :wq 进行保存退出。
#!/bin/bash
a="hello"
b="world"
c=""
if [ "$a" = "$b" ]; then
echo "$a 和 $b 相等"
else
echo "$a 和 $b 不相等"
fi
if [ -n "$b" ]; then
echo "字符串 b 不为空"
else
echo "字符串 b 为空"
fi
③启动zh07.sh 脚本文件
bash zh07.sh
(六)运算符
文件测试运算符
布尔运算符
三、流程控制语句——多命令组合
1、基本if语句
if [ 条件 ]; then
# 条件为真时执行的命令
fi
2、if...else 语句
if [ 条件 ]; then
# 条件为真时执行的命令
else
# 条件为假时执行的命令
fi
3、if...elif...else 语句
if [ 条件 ]; then
# 条件为真时执行的命令
else
# 条件为假时执行的命令
fi
4、使用逻辑运算符 && 和 ||
if [ 条件 ]; then
# 条件为真时执行的命令
else
# 条件为假时执行的命令
fi
5、使用 ! 进行非运算
if [ ! 条件 ]; then
# 条件为假时执行的命令
fi
6、使用方括号 [[ ]]
if [[ 条件 ]]; then
# 条件为真时执行的命令
fi
7、if语句
if ... else 语句
if [ 条件表达式 ]
then
语句序列
fi
if ... else ... fi 语句
if [ 条件表达式 ]
then
语句序列1
else
语句序列2
fi
if ... elif ... fi 语句
if [ 条件表达式1 ]
then
语句序列1
elif [ 条件表达式 2 ]
then
语句序列2
elif [ 条件表达式3 ]
then
语句序列3
……
else
语句序列n
fi
8、case语句
case 值 in
模式1)
语句序列1
;;
模式1)
语句序列2
;;
……
模式n)
语句序列n ;;
*)
其他语句序列
esac
9、循环语句
四、函数——定义与调用
1、返回值
使用全局变量
先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数的返回值。
使用变量要注意不要修改父脚本里不期望被修改的内容。
在函数中使用标准输出
将一个Shell函数作为一个子程序调用(命令替换),将返回值写到子程序的标准输出。
在函数中使用return返回整数值
$?是一个特殊的内部变量,可用于获取上一个命令执行后的返回结果,可以直接通过函数return语句来接收返回值。
2、参数
在Shell中调用函数时可以向其传递参数。
与脚本一样,在函数体内部也是通过$n的形式来获取参数的值。
$1表示第一个参数。
$2表示第二个参数。
总结
通过对 Shell 变量、表达式与运算符、流程控制语句和函数的全面介绍,读者可以看到 Shell 脚本的强大功能与灵活性。无论是在日常的系统管理中,还是在复杂的任务调度中,掌握这些基本概念都将极大提高工作效率。随着对 Shell 脚本理解的加深,用户将能够编写出更为高效、可维护的脚本,进一步提升自动化水平,适应快速变化的技术环境。
标签:指南,语句,Shell,入门,echo,运算符,sh,脚本,表达式 From: https://blog.csdn.net/yoona333/article/details/142612253