Shell编程规范与变量

Shell

       Shell是翻译官,是在计算机与用户之间。它将代码翻译为人类可读懂的语言,反之将人类的语言翻译为计算机的二进制语言,这就是Shell。

Shell编程规范与变量_第1张图片

 

Linux系统中shell的种类

bash:Linux默认的shell

tcsh:整合了csh的功能,提供比csh更强大的功能

csh:类似于C语言的shell

nologin:是shell一种类型,表示禁止用户登录

 查看系统自带的shell:

[root@localhost gsn]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh


脚本的定义

是一种扩建的语言、动态语言、也是一种编程的语言。
用来控制软件及应用程序,脚本都是以文本形式来保存的。执行文本当中输入的命令就是脚本。

Shell脚本的构成

第一类:开头注明解释的区域如 ——  #!/bin/bashs   #!/usr/bin/python等
              默认就是:/bin/bash 的情况下,开头可不写

第二类:执行语句。语句都是Linux系统所支持的命令语句,包含第三方扩展命令,都可以作为脚                本的执行语句

第三类:# 是注释的符号,在语句前面注释上的符号,则不被执行。

执行脚本的四种方式

sh:后面直接接上文本即可执行

source:点命令,也是一个符号。点是bash的内部命令自带的,读取文件当中可执行的命令,会加载到shell当中,不用重启直接生效,需赋权执行。

./  :在当前目录执行,相对路径形式,需赋予执行权限

/   :绝对路径,需赋予执行权限

重定向输入、输出

输出:“>”表示把指定结果保存在文件夹中,覆盖原有内容。

输入:“<”表示从指定文件中获取密码、免交互形式

输出:“>>”表示在当前内容的尾部追加,不覆盖原有内容

重定向错误输出:“2>”表示只保存错误信息到指定文件中,并且会覆盖原有内容。

混合输出:"&>"表示标准和错误都将保存在指定文件中,并且会覆盖原有内容。

变量

变量是可以改变的类型和范围,变量要有一个范围和类型。

变量的类型:int整数、string字符串、true&false布尔运算、小数 浮点

变量名称:固定名称、系统预设、自定义名称
接下来着重讨论自定义名称
 

自定义变量名称

       自定义变量名称原则在于:不能使用系统的一下命令来取名、不用中文、特殊字符符号来指定名称;最好使用英文来指定变量名;在文本当中每一行语句最好要有注释,目的在于方便他人理解该代码的具体解释。

变量赋值

首先定义变量的值,给它赋予一个值。如:a=90

接着 “echo” 打印出变量的值并查看。

[root@localhost gsn]# a=90
[root@localhost gsn]# echo $a
90

删除值的命令:unset a
不过只读变量的不能通过此删除、修改

赋值时最好给值加上引号,不同的符号作用也不一样。如下:

反撇号 `` :命令执行的结果,赋值给变量名、命令的替换

a=`ps  aux  |  grep  root`

echo  $a

单引号 ' ':强引用,单引号只打印变量名,不打印变量值

[root@localhost gsn]# echo '$a'
$a

双引号 " ":弱引用,用来打印出变量的值

[root@localhost gsn]# echo "$a"
90

read命令获取变量值
-p:表示指定提示符,提示用户输入数据

作用在于无需每次给文本进行编辑变量值,利用此命令即可动态修改想要的值,操作如下:

[root@localhost opt]# vim 123
read -p "第一个数制" a
read -p "第二个数制" b
c=$(($a+$b))
echo $c

[root@localhost opt]# source 123
第一个数制 7
第二个数制 9
16


变量的作用范围:默认情况下新定义的变量只能在当前的shell中才能生效,也可以叫做局部变量,export用来临时声明。

接下来便由此引出了全局变量:

全局变量

在程序和脚本中以及全部的shell环境中都可以被引用;但是如有重名,便会比较麻烦去修改调试。

export只是临时永久声明全局的变量

那么全局配置的文件路径是:

/etc/profile —— 针对所有用户

只对root用户生效的全局:

/root/.bashrc_profile

/root/.bashrc

注:全局变量编辑后需要source更新一下

以上都是在自定义变量的范畴内

环境变量

环境变量:是系统提前创建好的,或者人工添加的,用来设置用户的工作环境,配置系统行为,传递信息,控制程序执行。

系统环境变量:echo  $PATH:所有系统环境变量的路径。是所有人都可见,都可用的(Tab键可补齐)。

[root@localhost /]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

$HOME :用户的宿主目录

$USER:表示用户名称     

$PWD:表示当前所在目录    

$PATH:可执行程序的默认路径

位置变量:也叫命令行参数,脚本运行时,从外部传递变量值,让脚本来运行,可用根据需求来进行处理。
$n:n表示的数字 1,2,3,4,5,6,7,8,9           10及以上的参数要加上{ }大括号。

[root@localhost opt]# vim sss.sh
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum

[root@localhost opt]# sh sss.sh 100 200
300

注:$0表示命令本身,$1$2表示从左往右赋值,脚本执行时从外部传变量值。

预定义变量:编程语言或者脚本语言解释器来提供的,可以自动设置,可以更新的,但是由编程语言或者脚本解释器自动完成的,人工不能修改。

$*:加双引号时会把参数当成一个整体来处理,不加引号则分别处理

$@:加与不加双引号都会把参数分开处理

$* 和 $@:都表示命令和脚本需要处理的参数

$#:统计传递给脚本的参数的个数

$?:表示一条命令或者脚本来执行后的一个返回码,返回码为0则表示执行正确,不为0则是执行不正确;并且 $? 只能返回最近的一次命令或者脚本执行的返回码。

整数运算

整数运算包含 “加+、减—、乘*、除/、取余%” 五个运算法则

a=$((20+30))

a=$((30-20))

a=$(expr 12 \ *5)

a=$((30/20))

a=$((30%20))

i++: i=$(($i+1)) 先赋值,再相加(i=1 i=1+1 i=2+1 每次自加1)
i-- :每次自减1,先赋值再相减
i+=2:每次自加2,先赋值,再加2
++i:先加再赋值,自加1
--i:先减再赋值,自减1

bc运算

简易的计算器、支持小数计算

如下:

[root@localhost opt]# echo 3.1415926+2.33 | bc
5.4715926

你可能感兴趣的:(linux,运维,服务器)