shell编程基础(shell编程基础linux)

shell编程基础(shell编程基础linux)Shell 是一个命令行解释器 它为用户提供了一个想 Linux 内核发送请求以便程序运行的界面系统级程序 用户可以用 Shell 来启动 挂起 停止 或者是编写一些程序 一 Shell 脚本的执行方式 脚本的初步编写 1 脚本以 bin bash 开头 2 脚本需要有可执行的权限 如 创建第一个 shell 程序 输出 hello world bin bash echo hello

大家好,我是讯享网,很高兴认识大家。



       Shell是一个命令行解释器,它为用户提供了一个想Linux内核发送请求以便程序运行的界面系统级程序。用户可以用Shell来启动、挂起、停止,或者是编写一些程序。

一、Shell脚本的执行方式

       脚本的初步编写

1、脚本以 #!/bin/bash开头

       2、脚本需要有可执行的权限

       如:创建第一个shell程序,输出hello world!

       #!/bin/bash

       echo “hello world!”

       执行方式

       1、输入脚本的绝对路径或相对路径(此方法要赋予该脚本可执行权限),如https://www.bilibili.com/read/cv/hello.sh 或/home/hello.sh

       2、sh + 脚本名,可以直接执行

 

二、Shell的变量

       Linux Shell的变量分为系统变量和用户自定义变量。

       系统变量:\(HOME、\)SHELL、\(USER等等,可用echo输出查看,如echo \)HOME。(输入set 可以查看所有的系统变量)

       1、定义变量:变量名=值 (不可加空格)

       2、撤销变量:unset 变量名(注意:声明静态变量readonly变量不可用unset撤销)

       如:定义一个变量A,使之等于100,声明静态变量B=200

       #!/bin/bash

       A=100

       echo A=\(A (或echo “A=\)A”,这两种写法都输出A=100,而echo \(A则直接输出100)</p><p style="text-align: left;">       readonly B=200</p><p style="text-align: left;">       echo B=\)B

       (注意:变量名规范为大写,不能带有系数,不能随意加空格)

       将命令的返回值赋给变量

       1、A=date,即可将date命令的结果赋给A(必须要加反引号,否则是将文本赋给A)

       2、A=\((date) 等价与反引号</p><p style="text-align: left;"><strong></strong><strong></strong></p><p style="text-align: left;">       <strong>基本语法</strong></p><p style="text-align: left;"><strong>       </strong>export 变量名=变量值 (将shell变量输出为环境变量或全局变量)</p><p style="text-align: left;">       source 配置文件 (刷新配置文件,让修改后的配置信息立刻生效)</p><p style="text-align: left;">       echo \)变量名   (查询环境变量的值)

       多行注释:  :&lt;&lt;!

                        内容

                        !

       当执行一个shell脚本时,如果想要获取到命令行的参数信息,就可以用到位置参数变量。如https://www.bilibili.com/read/cv/myshell.sh 100 200 就是一个执行shell的命令行,可以在myshell脚本中获取参数信息。

       基本语法

       \(n  (n为数字,0代表命令本身,\)1-9代表第1-9个参数,十以上的参数需要用大括号括起,如\({10})</p><p style="text-align: left;">       \)*  (*代表命令行中的所有参数,\(*把所有参数看成一个整体)</p><p style="text-align: left;">       \)@  (也代表命令行中所有参数,不过\(@把每个参数区分对待)</p><p style="text-align: left;">       \)#  (代表命令行中所有参数的个数)

       如编写一个myshell.sh脚本

       #!/bin/bash

       echo “0=\(0 1=\)1 2=\(2”</p><p style="text-align: left;">       echo “\)*”

       echo “\(#”</p><p style="text-align: left;">       则在命令行中输入https://www.bilibili.com/read/cv/myshell.sh 100 200,显示</p><p style="text-align: left;">       0=https://www.bilibili.com/read/cv/myshell 1=100 2=200</p><p style="text-align: left;">       100 200</p><p style="text-align: left;">       2</p><p style="text-align: left;"><strong></strong><strong></strong></p><p style="text-align: left;">       预定义变量是shell设计者事先定义好的变量,可以直接在Shell脚本中使用。</p><p style="text-align: left;">       <strong>基本语法</strong></p><p style="text-align: left;"><strong>       </strong>\)\(  (当前进程的PID)</p><p style="text-align: left;">       \)!   (后台运行的最后一个进程的PID)

       \(?  (最后一次执行命令的返回状态。如变量值为0则上一次命令正确执行,如果不为0则不正确执行)</p><p style="text-align: left;">      </p><p style="text-align: left;"> </p><p style="text-align: left;"> </p><p style="text-align: left;"><strong></strong></p><p style="text-align: left;">       <strong>基本语法</strong></p><p style="text-align: left;"><strong>       </strong>“\)((运算式))” 或 “\([运算式]” 或 expr m + n (expression表达式)</p><p style="text-align: left;">       1、注意expr 运算符间要有空格,用echo输出时需要 `expr m + n` 将结果赋给变量</p><p style="text-align: left;">     2、expr m – n</p><p style="text-align: left;">       3、expr * , / , % 乘, 除, 取余</p><p style="text-align: left;"> </p><p style="text-align: left;"><strong></strong></p><p style="text-align: left;"><strong></strong><strong></strong></p><p style="text-align: left;"><strong>       </strong>[ condition ]  (注意condition首尾有空格,非空返回true,可以用\)?验证,0为true,&gt;1为false)

       [ condition ] && echo OK || echo NotOK 表示判断,若为true则执行前面,false相反。&&表示“或”

  

if为开始,then承接,fi结束

基本语法

if [ 条件判断句 ]

then

代码

fi

多分枝的if判断句


讯享网

if [ 条件判断句 ]

then

代码

elif [ 条件判断句 ]

then

代码

fi

如:1、判断ok是否等于ok(字符串的比较)

       #!/bin/bash

       if [ “ok” = “ok” ]

       then

              echo “equal”

       fi

       2、判断23是否大于22

       #!/bin/bash

       if [ 23 -ge 22 ]

       then

              echo “bigger”

       fi

       3、判断/root/a.txt是否存在

       #!/bin/bash

       if [ -f /root/a.txt ]

       then

              echo “exist”

       fi

       4、输入参数≥60则输出及格,输入参数&lt;60则输出不及格

       #!/bin/bash

       if [ \(1 -ge 60 ]</p><p style="text-align: left;">       then</p><p style="text-align: left;">              echo “及格”</p><p style="text-align: left;">       elif [ \)1 -lt 60 ]

       then

              echo “不及格”

       fi

      

基本语法

       case \(变量名 in</p><p style="text-align: left;">       “值1”)</p><p style="text-align: left;">       程序1</p><p style="text-align: left;">       ;;</p><p style="text-align: left;">       “值2”)</p><p style="text-align: left;">       程序2</p><p style="text-align: left;">       ;;</p><p style="text-align: left;">       *)</p><p style="text-align: left;">       程序3</p><p style="text-align: left;">       ;;</p><p style="text-align: left;">       esac</p><p style="text-align: left;">(如果变量值=值1,则执行程序1,值2同理。如果都不等于值1或值2,则执行程序3)</p><p style="text-align: left;">       如:输入参数1则输出“周一”,输入参数2则输出“周二”,其他值输出“其他”</p><p style="text-align: left;">       #!/bin/bash</p><p style="text-align: left;">       case \)1 in

       “1”)

       echo “周一”

       ;;

       “2”)

       echo “周二”

       ;;

       *)

       echo “其他”

       ;;

       esac

 

      

基本语法1

       for 变量 in 值1 值2 值3…

       do

       程序

      done

       语法2

       for ((初始值;循环控制条件;变量变化))

       do

       程序

       done

       如:1、打印命令行输入的参数

       #!/bin/bash

       for a in “\(*”</p><p style="text-align: left;">       do</p><p style="text-align: left;">       echo “Num is \)a”

       done

       (这种情况下,输出的参数会在同一行内。\(*换成\)@则可分别输出,或者去掉双引号)

       2、设计一个从1加到n的累加求和程序

       #!/bin/bash

       SUM=0

       for (( i=1; i&lt;=\(1; i++))</p><p style="text-align: left;">       do</p><p style="text-align: left;">              SUM=\)[ \(SUM+\)i ]

       done

       echo “Sum=\(SUM”</p><p style="text-align: left;"> </p><p style="text-align: left;">       <strong></strong><strong></strong></p><p style="text-align: left;"><strong></strong><strong>基本语法</strong></p><p style="text-align: left;"><strong>       </strong>while [ 条件判断式 ]</p><p style="text-align: left;">       do</p><p style="text-align: left;">              程序</p><p style="text-align: left;">       done</p><p style="text-align: left;">       (注意条件判断式和[]之间有空格)</p><p style="text-align: left;">       如:设计一个从1加到n的程序</p><p style="text-align: left;">       #!/bin/bash</p><p style="text-align: left;">       SUM=0</p><p style="text-align: left;">       i=0</p><p style="text-align: left;">       while [ \)i -le \(1 ]</p><p style="text-align: left;">       do</p><p style="text-align: left;">              SUM=\)[\(SUM+\)i]

              i=\([\)i+1]

       done

       echo “Sum=\(SUM”</p><p style="text-align: left;"> </p><p style="text-align: left;"><strong></strong><strong></strong></p><p style="text-align: left;">       <strong>基本语法</strong></p><p style="text-align: left;"><strong>       </strong>read [选项] 参数</p><p style="text-align: left;">       <strong>常用选项</strong></p><p style="text-align: left;"><strong>       </strong>-p 显示提示的内容</p><p style="text-align: left;">       -t 设置等待时间</p><p style="text-align: left;">       如可以显示十秒内在终端中输入的数值</p><p style="text-align: left;">       #!/bin/bash</p><p style="text-align: left;">       read -t 10 -p “请输入一个数字=” NUM1</p><p style="text-align: left;">       echo “ 你输入的数值= \)NUM1”

 

四、函数

     

shell编程语言和其他语言一样,具有系统函数,也可自定义函数。介绍2个系统函数

      

basename

       功能:返回完成路径最后/的部分,常用于获取文件名

       基本语法: basename 完整路径 [文件扩展名]

       (如果输入扩展名,则输出内容会把扩展名去掉)

       如:输入basename /home/test.txt .txt 则输出test

       dirname

       功能:返回完整路径最前/的部分,常用于返回路径部分。

       基本语法:dirname 完整路径

       (从给定的绝对路径中去除文件名,并返回路径部分)

       如:输入dirname /root/code/a.txt 则输出/root/code

 

      

基本语法

       function 函数名 [()] {

              程序

}

       调用该函数则直接写 函数名 [值]

       如:计算两个输入的数的和

       #!/bin/bash

       function getSum() {

              SUM=\([\)n1+\(n2]</p><p style="text-align: left;">              echo “和为 \)SUM”

}

read -p “请输入第一个数= ” n1

read -p “请输入第二个数= ” n2

getSum n1 n2

小讯
上一篇 2025-05-07 20:11
下一篇 2025-04-16 19:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/175223.html