Linux Shell编程规范与变量

本文详细介绍了Linux Shell的基础知识,包括其作用、常见类型如bash,以及脚本的编写、执行逻辑和错误类型。重点讲解了重定向和管道操作,展示了如何利用它们进行数据处理。此外,还深入探讨了Shell变量的使用,包括自定义变量、赋值规则、作用范围和环境变量。文章适合初学者了解和掌握Shell编程的基本技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Linux Shell编程规范与变量

一、Shell

shell的作用

shell的构成

 二、脚本

脚本概念

脚本应用场景

脚本执行逻辑

脚本执行方式

 脚本错误类型

三、重定向与管道操作

重定向操作

 管道操作

 四、变量

shell变量的作用

shell变量的类型

自定义变量

 赋值时使用引导

 变量的作用范围

环境变量


Linux Shell编程规范与变量

一、Shell

shell的作用

命令解释器,“翻译官”
介于系统内核与用户之间,负责解释命令行

常见的shell

bash:基于gun的框架下发展的shell
csh:类似c语言的shell
tcsh:整合了csh提供了更多功能
sh:已经被bash替换
nologin:这个shell可以让用户无法登陆

bash(bin/bash)是目前大多数Linux版采用的默认shell

shell的构成

将命令按顺序一一列出,最后自动执行
执行需要权限,也可以直接调用

脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行一下的代码语句是通过/bin/bash程序来解释执行的
#!/bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python、#!/bin/expect

注释信息:以#开头的语句表示为注释信息

可执行语句:比如echo命令用于输入“ ”之间的字符串

 二、脚本

脚本概念

将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作

脚本应用场景

重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行

脚本执行逻辑

顺序执行:程序从上而下顺序执行
选择执行:程序执行过程中,根据条件的不同进行选择不同分支继续执行
循环执行:程序执行过程中需要重复执行多次某段语句

脚本执行方式

指定路径去执行文件(需要有执行权限)

 指定解释器去执行(不需要权限)

 脚本错误类型

一类命令错误命令出错时不会影响接下来的命令继续

语法错误

逻辑错误

bash -n 脚本名称 (不在当前目录下加绝对路径)   //检查语法错误
bash -x  脚本名称(不在当前目录下加绝对路径)   //逻辑错误

脚本错误常见的三种区别

语法错误:会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定准确
命令错误:默认后续的命令还会继续执行,用bash -n 无法检查出来,可以使用bash -x进行观察
逻辑错误:只能使用bash -x 进行

三、重定向与管道操作

交互式硬件设备

标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错误信息

类型                   设备文件             文件编号                  默认设备
标准输入             /dev/stdin              0                            键盘
标准输出             /dev/stdout            1                          显示器
标准错误输出      /dev/stderr             2                          显示器 

重定向操作

例:将123456重定向输出到pass.txt文件中,然后将pass.txt的内容重定向输入给用户张三的密码,从pass.txt 文件中取密码,需要注意SELinux 会影响此命令执行,若执行失败可尝试关闭SELinux(setenforce 0)

例:追加

ls -lh > test.txt 2>&1 等同于 ls -lh &> test.txt 

> (将标准输出结果保存到指定的文件)

2>&1(将标准错误输出重定向到标准输出)

&>(将标准输出、标准错误输出保存到同一文件) 

 管道操作

管道操作符:“|”: 将管道符号“|"左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道

 四、变量

shell变量的作用

用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化

shell变量的类型

自定义变量:由用户自己定义、修改和使用

特殊变量:环境变量,只读变量,位置变量,预定义变量

自定义变量

定义新的变量

格式:变量名=变量值

查看定义变量的值

格式:echo  $变量名

 赋值时使用引导

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值, $视为普通字符

反撇号:命令替换,提取命令执行后的输出结果,``和 $(…)作用相同

从键盘上输入内容为变量赋值

read命令获取输入内容

格式:read -p 提示信息 变量名

在脚本中编写,在命令行实现read获取

 变量的作用范围

局部变量:默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用

全局变量:可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用

临时设置变量

永久设置变量,需要在/etc/profile 文件里面添加 

 整数变量的算术计算

运算符:+ 加法、- 减法、* 乘法、/ 除法、% 取余

常见表达式

expr  变量1  运算符  变量2

var=$(expr  变量1  运算符  变量2)

var=$((变量1  运算符  变量2))

var=$ [变量1  运算符  变量2]

let  var=变量1  运算符  变量2

使用管道符

 expr不可计算小数,并且变量和运算符之间需要空格分隔

计算乘法时,需要使用 “\” 转义符

取余只要除后的余数

随机取余 

 使用let

i++ 和 ++i

环境变量

使用 env 命令可以查看到当前工作环境下的环境变量

变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,变量PATH表示可执行程序的默认搜索路径

配置文件:/etc/profile(全局生效)~/.bash_profile(当前用户环境)

使用awk提取IP地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值