Shell编程规范与变量

目录

shell脚本

1、shell概述

2、shell脚本的构成

1、脚本申明(解释器):

2、注释信息

3、可执行语句

3、shell脚本的执行

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

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

 4、管道符操作 |

5、重定向

1、交互式硬件设备

2、重定向操作类型

6、变量的分类

1.变量的分类

2.定义新的变量

 3.自定义变量

赋值时使用引号

7、read命令获取输入内容

方法一:

方法二:

 8、变量作用范围export

 9、整数变量的运算

格式:expr 变量1 运算符 变量2 

常用的运算方式:

使用bc进行运算,支持小数运算,但在脚本中不可直接使用否则会进行交互界面,可以用echo结合管道符使用

 布尔值:真或假,成立或不成立

 10、环境变量

 11、只读变量

12、位置变量

13、预定义变量

脚本进行备份

14、引用变量

echo选项:

常用的转义字符:

15、取消定义

特殊操作:


shell脚本

1、shell概述

linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色。负责接受用户输入的操作指令并进行解释,将需要的执行的操作传递给内核执行,并输出结果。

2、shell脚本的构成

1、脚本申明(解释器):

若第一行为"#!bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其他类型的解释器,比如:#!usr/bin/python、#!/usr/bin/expect

2、注释信息

以"#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行

3、可执行语句

比如echo命令,用于输出"  "之间的字符串

编辑格式:vim/root/yyh.sh

#!/bin/bash

echo "hello world"

3、shell脚本的执行

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

chomd +x /root/yyh.sh

指定绝对路径:/root/yyh.sh

指定相对路径:./yyh.sh

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

sh 脚本路径:sh yyh.sh

source 脚本路径:.yyh.sh 或者 source yyh.sh

 

 4、管道符操作 |

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

5、重定向

1、交互式硬件设备

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器,2,

2、重定向操作类型

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

 

6、变量的分类

1.变量的分类

环境变量:有系统维护,应用设置工作环境

位置变量:通过命令行给脚本程序传递参数

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

预定义变量:bash中内置的一类变量,不能直接修改

2.定义新的变量

格式:变量名=变量值

变量命名规则:以字母或下划线开头,区分大小写

 3.自定义变量

Bash中的变量操作相对比较简单,不像其他高级编程语言((如c/C++、Java等)那么复杂。在定义一个新的变量时,一般不需要

 提前进行声明,而是直接指定变量名称并赋给初始值(内容)即可

格式:变量名=变量值

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

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

等号两边没有空格。变量名称需以字母或下划线开头,名称中不要包含特殊字符(如+、一、*、/、.、 ?、8、&、#等)

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

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

赋值时使用引号

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

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

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

使用反撇号难以在一行命令中实现嵌套替换操作,这是可以该用"$()"来代替反撇号操作,以解决嵌套的问题

7、read命令获取输入内容

方法一:

read -p "提示信息" 变量名

echo $变量名

方法二:

echo -n "提示信息"

read 变量名

echo $变量名

 

 8、变量作用范围export

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

格式1:export 变量名

格式2:export 变量名=变量值

 9、整数变量的运算

格式:expr 变量1 运算符 变量2 

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

常用的运算方式:

i=$(expr 12 \* 5)

i=$((12 * 5))

i=$[12 * 5]

let i=12*5

i++ 相当于 i=$[$i+1]

i-- 相当于 i=$[$i-1]

i+=2 相当于 i=$[$i+2]

 

使用bc进行运算,支持小数运算,但在脚本中不可直接使用否则会进行交互界面,可以用echo结合管道符使用

 布尔值:真或假,成立或不成立

bc还可以做逻辑运算,真为1,假为0

 

 10、环境变量

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

变量user表示用户名称,home表示用户的加目录,lang表示语言和字符集,pwd表示当前所在的工作目录,变量path表示可执行程序的默认搜索路径。

 11、只读变量

用于变量值不允许被修改的情况

12、位置变量

当执行命令操作时,第一个字符表示命令名或脚本程序名,其余的字符表示按照从左到右的顺序一次赋值给位置变量。

$n:n为是数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}。

 

 

 

13、预定义变量

$*、$@:表示命令或脚本要处理的参数                                                                                              $*:把所有参数看成空格分隔的一个字符串整体,代表"$1 $2 $3 $4"                                                  $@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立的,代表"$1 $2 $3 $4"              $0:表示当前执行的脚本或命令的名称                                                                                                $#:表示命令或脚本要处理的参数的个数                                                                                             $?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常用于shell脚本中return退出函数并返回的退出值。

$0

$?

$#

$*

脚本进行备份

14、引用变量

echo选项:

echo -n:表示不换行输出

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

常用的转义字符:

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

\n:换行

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

15、取消定义

unset 变量名

特殊操作:

双引号":主要起界定字符串的作用,特别是当要赋值的内容包含空格时,必须以双引号括起来

1、当内容中有空格

2、当以变量的值进行赋值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值