当前位置: 首页 > news >正文

linux - shell脚本编程

一:第一个shell脚本程序

介绍

shell脚本程序,使用shell语言编写的程序(shell过程,shell脚本,脚本)由shell脚本解释.

容易编写,修改和调试,无需编译,由shell解释执行,是一个文本文件,一次执行一条命令

当命令执行完or出错,shell停止执行(.sh结尾)

shell的注释:#

比如:
hello.sh:

脚本的执行:

-1:我们可以使用sh hello.sh  or   bash hello.sh   or fish hello.sh来执行(启用新shell进程)

-2: . hello.sh    or  source hello.sh(在当前的shell进程解释执行)

-3:chmod u+x hello.sh  使用./hello.sh执行(将脚本转换为可执行文件)

(之所以加入./:不叫回去指定PATH的路径找,加了就说明在当前的路径)

比如:exit.sh:

exit

使用source exit.sh就是退出当前进程

如果是sh exit.sh 就没有用

二:脚本程序变量

变量:

计算机语言中存储和表示值的抽象概念,我们需要去关注他的命名,类型,存储空间,生存周期等等

变量的定义:

变量=变量值 (不要有空格) 而且不支持数据类型,默认转换为字符串

name= “前name 后name”

age =19

可以复制一个命令的结果

eg:DATE=`date`

变量的生命周期:

知道进程结束or unset 变量

使用变量:

需要$

比如:

a=1

b=a

echo $b #会显示 a

b=$a

echo $b #会显示 1

三:字符串拼接

直接放在一起就好了

first_sentence = “i am ”

name = my_name

second_sentence =”,nice to meet you!”

sentence = ${first_sentence}-${name}-${day}  #这里的{}只是为了让逻辑清晰,可以不要

echo sentence

#显示i am my_name,nice to meet you!

四:算数运算

内部没有支持算数运算的东西:
a=1

b=2

c=$a+$b

echo c #1+2

-1:expr:

算术运算符:+ ,- ,\*, /, \%

eg:(注意,符号两边要有空格

expr 1 + 2 #3

expr -1 - 2 #-3

expr 4 / 3 #1

所以就可以:

x=10

x=`expr $x + 1`

echo $x #11

-2:也可以let

let x=x+1  //把表达式当做一个参数 ,所以这里面=,+的两边都没有空格

x=100

let x=x+100

let y=x*2

echo %y #400

-3:(())   

(()) #支持 a++,c-- ,a*=2    !!!!!

x=100

((x=x+100))

echo x #200

((x++,a=x))

echo $a #201 ,

五:脚本程序的参数输入

-1:命令行输入:

./xxx.sh 参数1 参数2 参数3

到时候再程序里面直接使用$1....就可以了

还有一些特殊的参数:

(注意:第10个及以后的参数需要用大括号括起来,eg: ${10})

eg:hello_pro.sh:

echo ”hello,$1”

./hello_pro.sh “world!”   #hello,world!

可以使用 set来将自己的参数按顺序赋值给位置参数

-2:交互式输入:


read a b c #等待用户输入3个变量

如果输入的变量多于3个,则>=3个之后的全部赋值给最后一个

如果输入的变量少于3个,则,有几个前面的就读几个

六:条件语句

字符串的判断:

下面的 [ 条件表达式 ] 可以是 test 条件表达式

数值的判断操作符:

文件检测:

逻辑表达式可以使用逻辑运算法来进行组合:


-a:与

-o:或

! :非

单分支:if - then -fi

注意:if then 不能放在同一行,如果需要,则用; 在 ] 和 then中间分隔

双分支:if - then - else -fi

多分支: if- then -elif -then ...... fi

七:分支语句

case:通过变量值匹配与定义的模式来执行对应的命令块

(注意是;;截止一个选项,同时其他的选项表示为 *)

八:循环语句

1-:for(成立则执行)

variable 从头到尾取list的值,每个值执行一次

这里的取值列表可以是:
----1:列出所有的成员

for filename

in file1 file2 file3

do

xxx

done

----2:等差数列 (start,end,步长)  / seq start 步长 end

for i in {1..100} #默认为1

do

xxx

done

----3:命令的结果

for filename

in `cat names`

do

xxx

done

2-:while(成立则执行)

while [ condition ]

do

xxxxx

done

3-:until (不成立则执行)

until [ condition ]

do

xxx

done

可以使用continue /break

九:程序执行状态返回

shell的内部命令,用于立即终止程序

exit [n]

n是退出的状态:
0 :退出成功

else:退出失败,不同的值对应不同的错误类型

\

相关文章:

  • docker创建一个centOS容器安装软件(以宝塔为例)的详细步骤
  • CentOS 7 安装OpenJDK 17 JRE
  • 空间数据分析新趋势:AI 与 ArcGIS Pro 的协同创新
  • 使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统
  • MySQL 8.0 OCP(1Z0-908)英文题库(1-10)
  • Linux NVIDIA 显卡驱动安装指南(适用于 RHEL/CentOS)
  • 检测内存条好坏有工具,推荐几款内存检测工具
  • 从明文裸奔到密钥长城:HTTPS加密全链路攻防与CA信任锚点构建
  • 直播数据大屏是什么?企业应如何构建直播数据大屏?
  • Linux:认识基础IO
  • TikTok 矩阵运营新手实操保姆级教程 2.0 版本
  • CentOS 7.9 安装详解:手动分区完全指南
  • C++排序算法(一)
  • 统信服务器系统reposync命令详解
  • CentOS算法部署
  • 【数据结构】手撕二叉搜索树
  • 【Linux系列】如何区分 SSD 和机械硬盘
  • Ubuntu 使用dotfiles个性化配置模板
  • 鸿蒙开发——4.ArkTS快速入门指南
  • 一种扫描雷达超分辨成像检测一体化方法——论文阅读
  • 多省市已开展现房销售试点,去年全国现房销售面积占比超30%
  • 中美经贸高层会谈在瑞士日内瓦开始举行
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 明星站台“胖都来”背后:百元起录视频,20万可请顶流
  • 公元1057年:千年龙虎榜到底有多厉害?
  • 世界银行最新营商环境体检单:59个测评点,上海22项达全球最优水平