linux系统shell编程规范与变量


一、shell脚本概述

shell是一个特殊的应用程序,介于操作系统和用户之间。扮演的是命令解释器的角色,用户输入操作指令,shell解释,传递个内核,内核执行完成,shell返回给用户一个执行结果。
centos7默认的shell是/bin/bash。
cat /etc/shells:查看当前系统的所有shell。

shell脚本叫脚本语言,按行执行,顺序执行,又叫动态语言,是编程语言的一种。用来控制软件应用程序,脚本通常都是以文本的形式保存,只在被调用的时候才进行解释或者编译。

二、shell脚本运行的方式

1.sh first.sh
2.bash first.sh
3.source first.sh
4. ./first.sh :必须给执行权限才能运行。
前三种无需给执行权限,适用于脚本调试阶段,可以不赋权执行。
脚本一旦正式运行,必须要给执行权限运行。

三、编写脚本规范

1.使用vim文本编辑器
2.编写时,每条linux命令按照执行顺序依次编写(每条命令独占一行)
在这里插入图片描述

四、重定向操作

1.重定向输入 <:从指定的文件读取数据,而不是从键盘输入。
例:在这里插入图片描述
2.重定向输出<:将输出的结果保存到指定的文件(覆盖原内容)
例:
在这里插入图片描述
3.重定向输出>>:将输出的结果追加到指定的文件尾部。(不覆盖原内容)
例:在这里插入图片描述
面试题:怎样不删除文件,清空文件的内容。/dev/null:“黑洞”文件
答案:cat /dev/null > passwd.txt
4.混合输出&>:将标准输出,标准错误的内容保存到同一个文件中,(原内容会被覆盖)
5.管道符操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象。(主要处理对文本的命令)

五、Shell脚本变量

1.Shell变量的作用

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

2.变量名:使用固定的名称,由系统预设或用户定义

3.变量值:能够根据用户设置、系统环境的变化而变化

2.变量名的规范

1.不要使用系统命令作为变量名。
2.不要使用中文,
3.不要试特殊符号开头,可以是用_下划线开头。
4.要用注释。

3、变量类型

1.自定义变量:用户自己定义的变量
在这里插入图片描述

2.特殊变量:环境变量,只读变量,位置变量,预定义变量
3.环境变量:系统自带,用于设置工作环境,配置系统行为,传递信息,控制程序的执行。这些环境变量,多有用户都可以使用,都可见。
由系统提前创建,
$USER:表示用户名称。
$HOME:表示用户的宿主目录
$LANG:表示语言和字符集
$PWD:表示当前所在工作
$PATH:表示可执行用户程的默认路径

4.只读变量:只可以读取不能修改的变量,(不可以被删除,重启即消失)
例:把a设置成只读变量readonly a,对a进行修改,出现无法修改或者删除,重启就会消失。
在这里插入图片描述
5.强引用和弱引用
在赋值变量时,单引号和双引号无区别。
打印变量时,如果时双引号是弱引用,还是变量原本的值。
单引号:强引用,就不再是原来的变量的值,变成字符串。
6.查看变量值
查看变量的值
格式:echo $变量名
echo $produc
echo $product $version
echo p r o d u c t 407. 位置变量位置变量又叫命令行参数,运行脚本或程序时,传递给他们的值,主要用于外部数据传递给脚本执行,命令形式为: {product}40 7.位置变量 位置变量又叫命令行参数,运行脚本或程序时,传递给他们的值,主要用于外部数据传递给脚本执行, 命令形式为: product407.位置变量位置变量又叫命令行参数,运行脚本或程序时,传递给他们的值,主要用于外部数据传递给脚本执行,命令形式为:n,传参的顺序时从左到右,传参范围为 1 − 9 ,如果是 10 则表示形式: 1-9,如果是10则表示形式: 19,如果是10则表示形式:{10}。
$0:表示命令本身。
在这里插入图片描述
在这里插入图片描述
8.预定义变量
通常是便程序语言或者脚本解释器提供的,根据需要自动设置和更新,不能修改。
∗ , *, @。
加了双引号的 ∗ ,会把内容处理在一行。 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 60 b c 723851664092 b c c 16520 d 833 c a 1 b . p n g ) ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 5064 c 77 c 5 c 934 f 4 d 88 d b 10 c 6 e c a f 681 d . p n g ) 加了双引号的 *,会把内容处理在一行。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/60bc723851664092bcc16520d833ca1b.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5064c77c5c934f4d88db10c6ecaf681d.png) 加了双引号的 ,会把内容处理在一行。![在这里插入图片描述](https://imgblog.csdnimg.cn/60bc723851664092bcc16520d833ca1b.png)![在这里插入图片描述](https://imgblog.csdnimg.cn/5064c77c5c934f4d88db10c6ecaf681d.png)加了双引号的@,会把内容分行处理。
在这里插入图片描述
在这里插入图片描述
不加引号的 ∗ , 也会把内容分行处理。 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / e c c 34 a 551 f c 14 e e 6 b e e 7005 a 1286 c f e 3. p n g ) ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / c f b 5 f 7 a 71703476 f b 65 b 3 e f e 0 c 5 e 568 a . p n g ) 不加引号的 *,也会把内容分行处理。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ecc34a551fc14ee6bee7005a1286cfe3.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/cfb5f7a71703476fb65b3efe0c5e568a.png) 不加引号的 ,也会把内容分行处理。![在这里插入图片描述](https://imgblog.csdnimg.cn/ecc34a551fc14ee6bee7005a1286cfe3.png)![在这里插入图片描述](https://imgblog.csdnimg.cn/cfb5f7a71703476fb65b3efe0c5e568a.png)不加引号的和$@,都会把内容处理在一行,表现形式一致。
在这里插入图片描述
在这里插入图片描述
? :判断上一条命令是否执行成功,成功返回 0 ,所有的非零返回值都是失败。 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 852 c b 5 c 7 f 1724 e 08 a 1 f f a 00 b 033 b 221 f . p n g ) 9. 全局变量所有的用户自定义变量在所有的子 s h e l l 环境中都可以使用。优点:全局范围,持久性,共享性。副作用:如果相同的变量名,直接引用全局变量,会导致不确定性。在脚本中一般使用的自定义变量。 e x p r 1 + 2 ( 数字与运算符直接有空格) e x p r 2 − 1 e x p r 2 ∗ 2 乘法: c = ?:判断上一条命令是否执行成功,成功返回0,所有的非零返回值都是失败。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/852cb5c7f1724e08a1ffa00b033b221f.png) 9.全局变量 所有的用户自定义变量在所有的子shell环境中都可以使用。 优点:全局范围,持久性,共享性。 副作用: 如果相同的变量名,直接引用全局变量,会导致不确定性。 在脚本中一般使用的自定义变量。 expr 1 + 2 (数字与运算符直接有空格) expr 2 - 1 expr 2 * 2 乘法:c= ?:判断上一条命令是否执行成功,成功返回0,所有的非零返回值都是失败。![在这里插入图片描述](https://imgblog.csdnimg.cn/852cb5c7f1724e08a1ffa00b033b221f.png)9.全局变量所有的用户自定义变量在所有的子shell环境中都可以使用。优点:全局范围,持久性,共享性。副作用:如果相同的变量名,直接引用全局变量,会导致不确定性。在脚本中一般使用的自定义变量。expr1+2(数字与运算符直接有空格)expr21expr22乘法:c=[ 2 * 5],或者let c=12
5
expr 2 / 2
取余:5 % 2
整数运算表达式:
在这里插入图片描述
***
在这里插入图片描述
特殊的形式:
i++:每次加1,再赋值,
例:for i=1;i<=10;i++,先赋值再加1。
(1 1+1 2 2+1 3 3+1…)
i–:先赋值,再减一。
++i:先加,再赋值。
–i:先减,再赋值。
bc计算器:支持整数运算,和浮点运算(浮点即小数点运算)
例:echo 4 * 2 | bc 或者 echo 4.2 * 2.2 | bc
自带环境变量:例 echo "scale =3; 4.2*2.2 | bc (保留小数点后三位)
scale:shell内部自带全局变量,自定义小数点的后几位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值