《掌握Shell脚本:从入门到精通的实用指南》

目录

引言

一、Shell变量——数组

二、表达式与运算符——表达式

(一)算术表达式

(二)逻辑表达式

(三)算术运算符

(四)整数关系运算符

(五)字符串检测运算符

(六)运算符

三、流程控制语句——多命令组合

1、基本if语句

2、if...else 语句

3、if...elif...else 语句

4、使用逻辑运算符 && 和 ||

5、使用 ! 进行非运算

6、使用方括号 [[ ]]

7、if语句

8、case语句

9、循环语句

四、函数——定义与调用

1、返回值

2、参数

总结


引言

        在现代操作系统中,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 脚本理解的加深,用户将能够编写出更为高效、可维护的脚本,进一步提升自动化水平,适应快速变化的技术环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoona1020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值