首页 > 系统相关 >《掌握Shell脚本:从入门到精通的实用指南》

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

时间:2024-09-28 23:50:46浏览次数:12  
标签:指南 语句 Shell 入门 echo 运算符 sh 脚本 表达式

目录

引言

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

标签:指南,语句,Shell,入门,echo,运算符,sh,脚本,表达式
From: https://blog.csdn.net/yoona333/article/details/142612253

相关文章

  • 初学者必看:Shell 编程入门与应用概述
     目录 引言一、Shell概述——什么是shell?二、Shell概述——shell功能三、Shell概述——命令解释四、Shell概述——程序执行1、创建shell文件2、运行Shell脚本有两种方法:①作为可执行程序②作为解释器参数五、Shell概述——输入输出重定向1、输出重定向(>)2、输......
  • shell 变量里的变量
    前言全局说明变量里的变量。一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_64x86_64GNU/Linux)pythonPython2.7.17(default,Mar82023,18:40:28)[GCC7.5.0]onlinux2pytho......
  • TypeScript入门指南
    文章目录TypeScript入门指南引言什么是TypeScript?为什么选择TypeScript?安装TypeScriptTypeScript基础1.定义变量类型2.接口3.类常见面试题Q:TypeScript和JavaScript有什么区别?Q:我需要在哪里运行TypeScript代码?结语进一步阅读TypeScript入门指南引言如果你......
  • TypeScript入门指南2
    文章目录TypeScript入门指南2作用方法使用场景缺陷总结TypeScript入门指南2作用TypeScript是JavaScript的一个超集,它为JavaScript添加了静态类型系统。这意味着你可以在编码时获得类型检查的额外好处,同时仍然能够编写能够在任何浏览器上运行的代码。TypeScrip......
  • # linux从入门到精通(三)
    linux从入门到精通(三)一、Linux的终端1、问题:在目前的桌面系统中,如果需要关机可以通过“系统”“关机”进行关机,那么后期服务器都是命令行模式的,届时这种方式将不好用,那会要怎么关机呢?2、答:可以通过命令行方式进行关机。命令的输入需要在终端中进行输入。3、什么是终......
  • C++入门基础知识90(实例)——实例15【求两数的最大公约数】
    成长路上不孤单......
  • 在新ARM板上移植U-Boot和Linux指南
    序言从支持一个定制板子在U-Boot和Linux中的过程中得到经验以一个带有知名SoC(i.MX6)且IP已经得到支持的板子为例,这次讨论几乎不涉及编码技能,更多地聚焦在U-Boot部分一般原则如果您有您的BSP(板级支持包)的源代码,请编译并运行BSP以:验证您正在工作的IP(知识产权/硬件模块)能......
  • C++入门基础知识89(实例)——实例14【创建各类三角形图案】
    成长路上不孤单......
  • Blender快速入门教程1简介
    0简介Blender是最著名的3D计算机图形制作免费程序之一。有了Blender,你可以创建角色、道具、环境以及你的想象力所能产生的几乎所有其他东西。它不仅可以创建对象。你还可以让它们运动起来。在动画中讲述一个故事,带领人们穿越你自己创造的世界,或者为一些视频片段添加特效。一......
  • java之使用CompletableFuture入门1
    Java17- 简介JDK中异步执行任务。源码://AFuturethatmaybeexplicitlycompleted(settingitsvalueandstatus),//andmaybeusedasaCompletionStage,supportingdependentfunctions//andactionsthattriggeruponitscompletion.publicclassCo......