Linux:Shell编程规范与变量

本文介绍了Linux中的Shell,包括它的概念和作用,如bashshell,以及shell脚本的执行方法。文章还讨论了管道操作如何连接命令,重定向如何改变输入输出流。此外,提到了变量的使用,包括自定义变量、只读变量以及整数变量的运算。环境变量和位置变量也在文中有所提及,它们在系统和脚本交互中起到关键作用。
摘要由CSDN通过智能技术生成

一、shell

1.Shell概念

shell是一个特殊的应用程序,介于操作系统和用户之间,扮演的是命令解释器的角色,用户输入操作指令,shell解释,传递给内核,内核执行完从shell返回,给用户一个执行结果

2.Linux中有哪些shell

/etc/shells 里面就是linux所包含的shell
在这里插入图片描述
sh:UNIX最初使用的shell,已经被bash替换
bash:鸡肫于GNU的框架下发展出的shell,是sh的扩展
csh:语法有点类似于c语言的Shell。
tcsh:整合了csh,提供更多的功能。
nologin:奇怪的shell,这个shell可以让用户无法登录主机。

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

3.shell脚本的作用

1.自动化运维
2.批量化重复操作可以编写脚本结合计划任务自动周期运行
3.减轻管理员工作量
4.提高处理文本文件的速度
5.避免配置出错

二、Shell脚本的执行

1.方法一:指定路径的命令,要求文件必须有x权限。

chmod+x /opt/first.sh
指定绝对路径:/opt/first.sh
指定相对路径:./first.sh

2.方法二:指定shell来解释脚本,不需要文件必须有x权限

  1. sh firsh.sh
  2. bash first.sh
  3. source first.sh
    1和2 的本质是运行脚本
    3的本质是执行脚本

三、管道操作 |

将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
ps aux | wc -l
echo “abc123” | passwd --stdin zhangsan
在这里插入图片描述

四、重定向

1.交互式硬件设备

在这里插入图片描述

2.重定向操作

在这里插入图片描述
在这里插入图片描述

五、变量

1.变量的作用

用来存放系统和用户需要使用的特定参数(值)

2.变量名

使用固定的名称,由系统预设或用户定义
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不能特殊符号开头 可以用_来开头
4、在指定变量名的时候有一个默认的规则:计算机:computer 学生:student a= b=
5、要有注释,还要注意前后一致

3.变量值

整数 int
字符串 string
布尔:真 假 0 1
浮点:1.1 2.2

4.自定义变量

由用户自己定义、修改和使用
定义新的变量
格式:变量名=变量值
变量命名规则:以字母或下划线开头,区分大小写
product=benet
version=6.0
name=“zhang san”
查看变量的值

格式:echo $变量名

在这里插入图片描述

${}是一种特殊的语法形式,用于获取变量的值或者对变量进行操作。
${}语法可以应用于任何变量名称,其中变量名称放在花括号中,例如${product},其中VAR是变量名。

5.只读变量readonly

只读变量不可以重新赋值,不可以被删除,只能重启失效
在这里插入图片描述

6.强引用和弱引用

"$name " 弱引用,其中的变量引用会被替换为变量值
在这里插入图片描述

' n a m e ′ 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 8 c 19 d 031 a 64 b 45118 e 8 b 46 f 3 d f 754 f 9 f . p n g ) 反撇号:命令替换,提取命令执行后的输出结果, ‘ … ‘ 和 name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8c19d031a64b45118e8b46f3df754f9f.png) 反撇号:命令替换,提取命令执行后的输出结果,`…`和 name强引用,其中的变量引用不会被替换为变量值,而保持原字符串![在这里插入图片描述](https://imgblog.csdnimg.cn/8c19d031a64b45118e8b46f3df754f9f.png)反撇号:命令替换,提取命令执行后的输出结果,(…)作用相同
在这里插入图片描述

六.read命令获取输入内容

p prompt:指定提示符,用于提示用户输入数据。
-a array:将输入数据存储到一个数组中。

1.方法一:

read -p “提示信息” 变量名
echo $变量名

2.方法二:

echo -n “提示信息”
read 变量名
echo $变量名

read -a
数组输入
在这里插入图片描述
在这里插入图片描述

七、变量作用范围

全局变量
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。
当进入子程序或新的子Shell环境时,局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
缺点:潜在的副作用: 全局变量的使用可能导致副作用和潜在的复杂性。
因为全局变量是可访问的,所以它们可以被任何函数修改,
这可能导致程序状态的不确定性和难以调试的问题。

八、整数变量的运算

格式:expr 变量1 运算符 变量2 [运算符 变量3]
运算符:+ 加法、- 减法、* 乘法、/ 除法、% 取余
expr 12 * 5

常用的运算表达式:
i=KaTeX parse error: Undefined control sequence: \* at position 10: (expr 12 \̲*̲ 5) i=((125))
i=$[12
5] #这种用法已弃用
let i=12*5

i++ 相当于 i= ( ( (( ((i+1)) for i=1 i<=10 i++ i=10 i=9 i=9 i=8 i=7 i=6
i-- 相当于 i= ( ( (( ((i-1)) i=10 10-1=9 i=9 9-1=8 i=8
i+=2 相当于 i= ( ( (( ((i+2))
i++ 是先赋值再加1 i=1+1
++i 是加后再赋值1 1+1=2 2+1=3

bc是一个简单易用的计算器程序,可以用于执行基本的数学运算,
包括加、减、乘、除和取余等操作。
在Shell编程中,可以使用bc命令将数学表达式计算结果输出到标准输出或保存到文件中,以满足不同的需求。
echo 2*2 | bc
在这里插入图片描述

echo 2^4 | bc
在这里插入图片描述
非整数运算:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。
#!/bin/bash
#加
f= ( e c h o " 4.3 + 2.5 " ∣ b c ) e c h o " 4.3 + 2.5 = (echo "4.3+2.5"|bc) echo "4.3+2.5= (echo"4.3+2.5"∣bc)echo"4.3+2.5=f"
在这里插入图片描述
在这里插入图片描述

九、环境变量

环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。
每个用户还有自己的独立配置文件(~/.bash_profile)。可以用来长期变更或设置某个环境变量。
env查看当前工作环境下所有环境变量
在这里插入图片描述

echo $PATH  #查看当前搜索路径

在这里插入图片描述

PATH="$PATH:/root"	#将/root目录添加到搜索路径

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

十、位置变量

位置变量(Positional Variables),也称为命令行参数(Command-Line Arguments),
是在运行脚本或程序时传递给它们的值。位置变量用于将外部数据传递给脚本或程序,
以便根据需要进行处理。 $1 $2
在这里插入图片描述
在这里插入图片描述
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确

十一、面试题:怎么样不删除文件,清空文件内容

cat /dev/null > passwd.txt
cat passwd.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值