news 2026/7/28 18:33:47

Shell脚本入门(一)基础语法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Shell脚本入门(一)基础语法

目录

1、Shell解析器

2、变量

3、运算符

4、条件判断

5、流程控制

6、read函数


1、Shell解析器

默认在CentOS使用的是bash

2、变量

2.1 系统变量

$USER、$SHELL、$HOME、$PWD

2.2 自定义变量

①定义变量:

变量=值注意:等号两边不能有空格。

②撤销变量

unset 变量

③声明静态变量:

readonly 变量=值注意:常量使用unset无法撤销

④将变量提升为全局变量

export 变量

可以看到在之前定义的变量C是没有被输出,它是局部变量。使用export将它变为全局变量。

变量定义规则:①等号两边不能有空格

②变量可以以数字、字母、下划线组成,不能以数字开头,建议环境变量名使用全大写

③bash中,变量默认类型是字符串,无法直接进行数值运算

④变量的值如果有空格,使用单引号或者双引号括起来。

2.3 特殊变量

① $n:$n中n代表数字, $0代表脚本文件名称,$1~$9代表第一到第九个参数, 十以上的参数使用${10}。

② $#: 用于获取所有输入参数的个数,常用于循环中。

$* 与 $@

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

$@ 代表命令行中所有的参数,$*把每个参数区别对待。

$?: 返回上次执行命令的状态,0代表执行成功,非0则代表失败。

vim parameter.sh

echo $?, 返回0,这说明最后一次执行的命令成功了。

3、运算符

基本语法:$[运算式] 或者 $((运算式))

或者 expr + - \* / %等操作注意:expr 运算符间要有空格

4、条件判断

语法:[ condition ]注意:condition前后要有空格

条件非空即为true, [ liuzhoujian ] 为true, [] 为false

常用判断条件:

(1)两个整数之间比较 = 字符串比较 -lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal) -gt 大于(greater than) -ge 大于等于(greater equal) -ne 不等于(Not equal) (2)按照文件权限进行判断 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) (3)按照文件类型进行判断 -f 文件存在并且是一个常规的文件(file) -e 文件存在(existence) -d 文件存在并是一个目录(directory)

练习:1、判断100 是否大于99

练习2:判断一个文件是否具有可执行权限

多条件判断

&&表示上一条命令执行成功才执行下一条命令,|| 表示上一条命令执行失败才执行下一条命令。

5、流程控制

5.1 if判断

基本语法:

if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi

注意事项:① if后要有空格 ②[ 条件判断式 ] 条件判断式前后要有空格

练习:判断输入的数字是否大于10

5.2 case语句

1.基本语法 case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac 注意事项: 1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 2) 双分号“;;”表示命令序列结束,相当于java中的break。 3) 最后的“*)”表示默认模式,相当于java中的default。

练习:输入一个数字,如果是1,输出“该数字是1”, 如果是2,输出“2数字是2”,如果输入的是其他数字,则默认输出“其他”。

5.3 for循环

基本语法:

for (( 初始值;循环控制条件;变量变化 )) do 程序 done 或者 for 变量 in 值1,值2,值3... do 程序 done

练习1:从1加到100,输入结果

练习2:输出所有参数

$*与$@的区别:

当$*与$@没加双引号括起来的时候,都以$1,$2...$n的形式输出所有参数

当加上双引号时,$*将所有参数看为一个整体,以“$1 $2 $3...”输出,而$@则将各个参数分开,以"$1", "$2"..的形式输出。

5.4 while循环

基本语法:

while [ 条件判断式 ] do 程序 done

练习:从1加到100,输出结果

6、read函数

read(选项)(参数) 选项: -p 指定读取值时的提示语句 -t 指定读取值时的时间限制(秒) 参数: 接受输入的参数的变量名称

练习:输入用户名,限时5s

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 18:32:55

学编程卡在哪?做产品模特效果图时我才发现,问题根本不是工具

学编程卡在哪?做产品模特效果图时我才发现,问题根本不是工具 在决定用哪个工具之前,我其实已经纠结了将近两周。 Codex 还是现成的图像工作流?要不要直接用 VicroCode 搭一个小应用?还是先从网上找个教程跟着做&#…

作者头像 李华
网站建设 2026/7/28 18:30:48

基于Arduino与WS2812B的智能无线开关灯环设计与实现

1. 项目概述:从实用到炫酷的无线开关进化上次我们聊了自发电无线开关的基础实现,核心是解决布线麻烦和电池更换的痛点。这次,我们玩点不一样的——给这个“默默无闻”的开关加上一个会呼吸、会变色的炫彩灯环。这不仅仅是加个灯那么简单&…

作者头像 李华
网站建设 2026/7/28 18:29:29

市面上支持定制的内存颗粒SRAM芯片测试座公司

在半导体产业链的隐秘角落,芯片测试座(Socket)一直扮演着“隐形守护者”的角色。尤其在内存颗粒(SRAM、DRAM)领域,一颗测试座能否精准、稳定、高效地完成成千上万次测试,直接决定了芯片的良率与…

作者头像 李华