当前位置:网站首页 > Shell脚本编程 > 正文

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



       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)

       readonly B=200

       echo B=$B

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

       将命令的返回值赋给变量

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

       2、A=$(date) 等价与反引号

       基本语法

       export 变量名=变量值 (将shell变量输出为环境变量或全局变量)

       source 配置文件 (刷新配置文件,让修改后的配置信息立刻生效)

       echo $变量名   (查询环境变量的值)

       多行注释:  :<<!

                        内容

                        !

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

       基本语法

       $n  (n为数字,0代表命令本身,$1-9代表第1-9个参数,十以上的参数需要用大括号括起,如${10})

       $*  (*代表命令行中的所有参数,$*把所有参数看成一个整体)

       $@  (也代表命令行中所有参数,不过$@把每个参数区分对待)

       $#  (代表命令行中所有参数的个数)

       如编写一个myshell.sh脚本

       #!/bin/bash

       echo “0=$0 1=$1 2=$2”

       echo “$*”

       echo “$#”

       则在命令行中输入https://www.bilibili.com/read/cv/myshell.sh 100 200,显示

       0=https://www.bilibili.com/read/cv/myshell 1=100 2=200

       100 200

       2

       预定义变量是shell设计者事先定义好的变量,可以直接在Shell脚本中使用。

       基本语法

       $$  (当前进程的PID)

       $!   (后台运行的最后一个进程的PID)

       $?  (最后一次执行命令的返回状态。如变量值为0则上一次命令正确执行,如果不为0则不正确执行)

      

 

 

       基本语法

       “$((运算式))” 或 “$[运算式]” 或 expr m + n (expression表达式)

       1、注意expr 运算符间要有空格,用echo输出时需要 `expr m + n` 将结果赋给变量

     2、expr m – n

       3、expr * , / , % 乘, 除, 取余

 

       [ condition ]  (注意condition首尾有空格,非空返回true,可以用$?验证,0为true,>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则输出及格,输入参数<60则输出不及格

       #!/bin/bash

       if [ $1 -ge 60 ]

       then

              echo “及格”

       elif [ $1 -lt 60 ]

       then

              echo “不及格”

       fi

      

基本语法

       case $变量名 in

       “值1”)

       程序1

       ;;

       “值2”)

       程序2

       ;;

       *)

       程序3

       ;;

       esac

(如果变量值=值1,则执行程序1,值2同理。如果都不等于值1或值2,则执行程序3)

       如:输入参数1则输出“周一”,输入参数2则输出“周二”,其他值输出“其他”

       #!/bin/bash

       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 “$*”

       do

       echo “Num is $a”

       done

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

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

       #!/bin/bash

       SUM=0

       for (( i=1; i<=$1; i++))

       do

              SUM=$[ $SUM+$i ]

       done

       echo “Sum=$SUM”

 

      

基本语法

       while [ 条件判断式 ]

       do

              程序

       done

       (注意条件判断式和[]之间有空格)

       如:设计一个从1加到n的程序

       #!/bin/bash

       SUM=0

       i=0

       while [ $i -le $1 ]

       do

              SUM=$[$SUM+$i]

              i=$[$i+1]

       done

       echo “Sum=$SUM”

 

       基本语法

       read [选项] 参数

       常用选项

       -p 显示提示的内容

       -t 设置等待时间

       如可以显示十秒内在终端中输入的数值

       #!/bin/bash

       read -t 10 -p “请输入一个数字=” NUM1

       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]

              echo “和为 $SUM”

}

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

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

getSum n1 n2

到此这篇shell编程基础(shell编程基础linux)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • shell编程入门(Shell编程入门 网盘)2026-02-26 19:00:06
  • shell编程入门(shell编程实例详解)2026-02-26 19:00:06
  • shell编程入门(shell编程基础)2026-02-26 19:00:06
  • xshell连接交换机console口(xshell连接交换机console口波特率)2026-02-26 19:00:06
  • linux 命令不存在(shell命令不存在)2026-02-26 19:00:06
  • shell编程基础(shell编程基础实验报告)2026-02-26 19:00:06
  • shell编程总结(shell编程实例详解)2026-02-26 19:00:06
  • xshell连接交换机console口(xshell连接交换机console口粘贴命令乱码)2026-02-26 19:00:06
  • shell编程视频教程(shell编程视频教程百度云)2026-02-26 19:00:06
  • 批处理删除最后一行(删除最后一行 shell)2026-02-26 19:00:06
  • 全屏图片