Linux之Shell编程快速上手
创始人
2024-01-31 09:05:48
0

Shell编程快速上手

  • 一、Shell编程基础
    • 1.1 Shell脚本程序
    • 1.2 创建Shell脚本
  • 二、Shell的语法
    • 2.1Shell的变量
    • 2.2 设置环境变量
    • 2.3 位置参数变量
    • 2.4预定义变量

一、Shell编程基础

  在linux系统中,shell不仅能够执行命令(启动、挂起、停止甚至编写一些程序),还可以使用shell编程进行任务自动化,进行系统管理任务、系统任务调度等,是一门非常优秀的编程语言!

1.1 Shell脚本程序

  Shell脚本程序是Shell命令语句的集合,保存在文本文档中,可直接使用文本处理器运行和编程(如Vim)。Shell由Shell环境解释执行,Shell脚本在Linux系统中不需要编译、链接、及生成可执行文件,可直接由相应解释器解释执行

1.2 创建Shell脚本

脚本格式要求:

(1)脚本必须以#!/bin/bash 开头,告诉系统应该用何种Shell来执行此脚本。
(2)脚本需要设置可执行权限。

脚本常用执行方式:

(1)输入脚本绝对路径或者相对路径(首先要设置+x权限)。
(2)直接用(sh+脚本)直接执行,不用+x权限。

直接使用文本编辑程序(Vim)
(1)创建一个hello.sh

vim hello.sh
#输入 i 进入文本模式,输入一下内容
#echo 是输出命令

在这里插入图片描述
(2)存盘推出:按Esc键回到正常模式,输入:wq!
(3)无可执行权限用(sh+脚本)

sh hello.sh

(4)设置脚本可执行权限 chmod命令,并用相对地址执行脚本

chmod u+x hello.sh
./hello.sh

在这里插入图片描述注意:shell脚本通普通文件一样,可以没有扩展后缀,但为了方便区分,建议Bash脚本文件以sh结尾,如“shell.sh”。

二、Shell的语法

2.1Shell的变量

Shell变量的介绍:

(1)Shell变量分为系统变量和用户自定义变量。
(2)系统变量:$HOME、$PWD、$HELL等等
(3)显示当前shell中所有变量:set

Shell变量的语法:

定义变量:变量=值,=两边不能有空格。
变量名区分大大写,建议大写。
通过变量名前加$符号访问它的内容。
撤销变量:unset 变量
声明静态变量:readonly变量,静态变量不能unset。

$(command)语法:

运行括号里面的结果,并把命令放回给一个变量
A=$(data),将data的值赋值给A变量。

引号的使用:

(1)一个参数包含一个或多个空白字符需要给参数加上引号。
(2)双引号:“$data”,把data变量替换成它的值
(3)单引号:’$data‘,不会发生替换行为。
效果演示:vim var.sh 创建脚本程序

#!/bin/bash
#定义变量A
A=100
#输出变量的值
echo A=$A
echo A="$A"
echo A='$A' #单引号不发生替换
#撤销变量A
unset A
echo "A=$A"
#$(command)命令,返回结果给变量
D=$(date)
echo 当前时间为:$D

执行结果:sh var.sh
在这里插入图片描述

2.2 设置环境变量

起始也就是全局变量,在一个脚本中定义,其他程序脚本都能使用的这个环境变量。

1.exprot 变量名=变量值 (将shell变量设置为环境变量)
2.source 配置文件 (让修改后的配置文件立即生效,记得运行前现加一句)

2.3 位置参数变量

获取一个命令行的参数信息,可以使用位置参数实现。比如./envvar.sh 10 20 30,这就是一个执行shell的命令行,可以在脚本中获取参数信息。
基本语法:

1.$n:n代表数字,$0代表命令行内容,$1-$9代表第一到第九个参数,十个及十个以上需要用大括号包含,如${10}
2.$*:代表命令行中的所有参数
3.$#:代表命令行中参数的个数。

编写一个shell脚本:vim envvar.sh

#!/bin/bash
echo "当前脚本程序的名字:$0"
echo "当前第二个参数是:$2"
echo "当前传递了$#个参数”
echo "当前传递的参数分别为:$*" 
~                                  

在这里插入图片描述

2.4预定义变量

shell设计时已经定义好的变量,可以直接在shell脚本中使用
基本语法:

1.$$:当前进程的进程号(PID)
2.$!:后台运行的最后一个进程的进程号
3.$?:最后一次执行的返回状态,如果这个变量的值为0.证明上一个命令正确执行;如果这个变量的值为非0(数值由命令自己决定),则证明上一个命令执行不正确。

执行程序:

#!/bin/bash
echo "当前程序执行的进程号:$$"
echo "最后一个进程的进程号:$!"
echo "执行结果:$?"

运行结果:
在这里插入图片描述

更新中…

相关内容

热门资讯

新疆阿勒泰:“银发族”驭雪正青...   中新社新疆阿勒泰12月31日电 题:新疆阿勒泰:“银发族”驭雪正青春  中新社记者 蒋文月  正...
这份“年度答卷”,我们共同署名   岁序更替,华章日新。当我们站在时间的交汇点,回首,是携手走过的来路;向前,有无限辽阔的未来。这一...
视频丨多国人士:习主席新年贺词...   多国人士表示,习近平主席的新年贺词重申进一步全面深化改革开放和全球治理倡议,向国际社会传递了积极...
惠及超3.6亿人次!2025年...   新华社记者 谢希瑶  记者1日从商务部获悉,2025年,以旧换新相关商品销售额超2.6万亿元,惠...
俄媒:克宫称,“俄一将领在莫斯... 【环球网快讯】据俄新社22日报道,俄罗斯总统新闻秘书、克里姆林宫发言人佩斯科夫称,“俄罗斯一名将领在...
港珠澳大桥2025年客流车流双...   新华社广州1月1日电(记者 王浩明)2025年,经港珠澳大桥珠海公路口岸出入境客流与车流分别超过...
科学与健康|新药来了!检查结果...   一元复始,万象更新。2026年是“十五五”规划的开局之年,展望医疗卫生健康领域,一系列新政将陆续...
东西问丨穆罕默德·曼苏里:中国...   中新社南昌12月31日电 题:中国实践如何助力保障全球粮食安全?  ——专访联合国粮农组织助理总...
一批新规正式施行 事关社会治安...   央视网消息:2026年1月1日起,有一批事关社会治安、保育教育、电动汽车、网络安全等多方面的新规...
【好评中国】两江评 | 拼搏的...   元旦佳节,辞旧迎新。当新年的钟声敲响,2025年完美收官。回首过去这一年,每一个人都以坚韧不拔的...