Shell编写规范和变量

本文介绍了Shell脚本的基础概念,包括shell的作用和shell脚本的功能,如自动化任务和系统管理。详细讲解了shell变量的声明、赋值,包括预定义变量,以及使用echo命令查看和引用变量。此外,还讨论了变量运算,如expr和let,以及重定向和管道符的使用,帮助读者掌握如何在Shell环境中进行数据管理和流程控制。
摘要由CSDN通过智能技术生成

目录

一、shell概念

        1.1、shell脚本能干什么

        1.2、声明shell脚本的解释器

 二、shell变量及赋值

        2.1、自定义变量

        echo命令的运用

        2.2、特殊操作

         2.3、预定义变量

三、变量运算

        expr和let

四、重定向

五、管道符操作


一、shell概念

        shell是一个命令解释器,他在操作系统最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户,这种对话方式可是交互也可以是非交互,我们输入的命令计算机是不识别的,这时就需要解释器来进行编译,编程计算机能识别的语言。

        1.1、shell脚本能干什么

        自动化完成软件的安装部署,如安装部署LAMP架构服务

        自动化完成系统的管理,如批量添加用户

        自动化完成备份,如数据库定时备份

        自动化的分析处理,如网站访问量

        1.2、声明shell脚本的解释器

        如在文件开头标注    #!/bin/bash

                                        #!/bin/env/bash

                                        #!bin/sh

                                        

 二、shell变量及赋值

        变量是用来临时保存数据的,并且该数据值可以变化的,任何一个语言都离不开变量,如果某个内容需要多次使用并且会重复出现,这样就可以使用变量了,如果需要修改直接修改变量值就可以了

        2.1、自定义变量

格式:

变量名=变量值

#变量名:临时存放数据的地方

#变量值:临时的可变化的数据

                                         

        echo命令的运用

用echo查看和引用变量的值

通过在编名称前添加前导符号“$”,可以引用一个变量的值,使用 echo 命令可以查看变量,可以在一条 echo 命令中同时查看多个变量值

                    

当变量名称容易和紧跟其后的其他字符混淆时,需要添加大括号“{}”将其括起来,否则将无法确定正确的变量名称。对于未定义的变量,将显示为空值。

  

echo选项
echo -n表示不换行输出

使用echo -e输出转移字符,将转义后的内容输出到屏幕上

常用的转义字符如下:

\c 不换行输出,在”\c”后面不存在字符的情况下,作用相当于echo -n

\n 换行

\t 转义后表示插入tab,即制表符

 

        2.2、特殊操作

        还有一些特殊的赋值操作,可以更灵活的为变量赋值,以便适合于各位复杂的管理任务。

单引号(  '  )        当要赋值的内容包含$,",\等具有特殊含义的字符时,应使用单引号括起来。在单引号的范围内,将无法引其他变量的值,任何字符均作为普通字符看待。
双引号 (  “  )        双引号主要起界定字符串的作用,特别是当要赋值的内容包含空格时,必须以双引号括起来;其他情况下双引号通常可以省略。
反撇号 (  `  )        反撇号主要用于替换,允许将执行某个命令的屏幕输出结果赋值给变量。反撇号括起来的范围内必须能够执行的命令行,否则将会出错。

         2.3、预定义变量

预定义变量
预定义变量是由 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而 不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示
$#:表示命令行中位置参数的个数。  
$*:表示所有位置参数的内容,这些内容当做一个整体
$@:表示列出所有位置参数,但是是以单个的形式的列出 
$?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0 值均表示执行出现异常。 
$0:表示当前执行的脚本或程序的名称
$$:表示返回当前进程的进程号
$!:返回最后一个后台进程的进程号

三、变量运算

运算内容加(+)、减(-)、乘(*)、除(/)、取余(%)
运算符号$(()) 和 $[ ]
运算命令

expr 和 let

运算工具bc

      

        expr和let

四、重定向

类型操作符用途
重定向输入<从指定的文件读取数据
重定向输出>将标准输出结果,覆盖保存到指定的文件
>>将输出结果最佳到指定文件尾部
标准错误输出2>将错误信息,覆盖保存到指定的文件
2>>将错误信息 保存 到指定文件,不覆盖原有内容
混合输出&>将标准输出,标准错误保存到同一文件中
2>&1将标准错误输出重定向到标准输出

<例子

  1. [root@yy opt]# passwd --stdin yy < a.txt

  2. 更改用户 yy 的密码 。

  3. passwd:所有的身份验证令牌已经成功更新。

  4. [root@yy opt]#

>,>>例子 

[root@localhost yy]# cat test.sh 
123456
[root@localhost yy]# echo "123456" >> test.sh 
[root@localhost yy]# cat test.sh 
123456
123456
[root@localhost yy]# echo "aaaa" > test.sh 
[root@localhost yy]# cat test.sh 
aaaa
[root@localhost yy]# 

 2>,2>>例子

[root@localhost yy]# cat test.sh 
aaaa
[root@localhost yy]# asdadf 2> test.sh 
[root@localhost yy]# cat test.sh 
bash: asdadf: 未找到命令...
[root@localhost yy]# sssss  2>> test.sh 
[root@localhost yy]# cat test.sh 
bash: asdadf: 未找到命令...
bash: sssss: 未找到命令...
[root@localhost yy]# 

例4,混合输出

&> 可以将错误和正确的提示信息都保存到同一文件

[root@localhost yy]# cat test.sh 
123456
[root@localhost yy]# echo "111111" &> test.sh 
[root@localhost yy]# cat test.sh 
111111
[root@localhost yy]# aaaaa  &> test.sh 
[root@localhost yy]# cat test.sh 
bash: aaaaa: 未找到命令...
[root@localhost yy]# 

五、管道符操作

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

在shell脚本中,管道操作通常用来过滤所需要的关间信息。

例子

[root@localhost yy]# netstat -natp |wc -l
15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值