linux怎么查看本机内存大小
233
2022-09-30
shell编程规范与变量
shell编程规范与变量
Shell脚本概述Shell的作用Shell编程规范重定向与管道Shell脚本变量自定义变量特殊变量
Shell脚本的概念●将要执行的命令按顺序保存到一个文本文件●给该文件可执行权限●可结合各种Shell控制语句以完成更复杂的操作Shell脚本应用场景●重复性操作●交互性任务●批量事务处理●服务运行状态监控●定时任务执行
用户的登录Shell登录后默认使用的ShelI程序,一 般为/bin/bash不同Shell的内部指令、运行环境等会有所区别[root@localhost ~]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin
......
Linux中有哪些Shell?检查一下/etc/shells这个文件,里而就是Linux所包含的Shell.最常用的就是bash、tcsh、csh、 sh、nologin这 些shell。这些shell都是依据Linux发展者的不同所创造出的不同版本。bash:基准于GNU的框架下发展出的Shell。.csh:语法有点类似于c语言的Shell.tcsh:整合了csh,提供更多的功能。sh:已经被bash所替换。nologin:奇怪的shell, 这个shell可以让用户无法登录主机。注: bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell.
为什么系统上合法的Shell要写入/etc/shells这个文件呢?这是因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shel1的查询就是借由/etc/shells这个文件。
用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?当用户登录的时候,系统就会给我一 个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内。
shell脚本的作用自动化运维批量化重复操作可以编写脚本结合计划任务自动周期运行减轻管理员工作量提高处理文本文件的速度避免配置出错
Shell是一个而向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个Python脚本来实现,然后在shell中调用这个脚本实现较复杂的功能;或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。
面向过程语言●做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理●问题规模小,可以步骤化,按部就班处理●以指令为中心,数据服务于指令●C, shell面向对象语言●将编程看成是一个事物,对外界来说,事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能。●一种认识世界、分析世界的方法论。将万事万物抽象为各种对象●类是抽象的概念,是万事万物的抽象,是- -类事物的共同特征的集合●对象是类的具象,是-个实体●问题规模大,复杂系统●以数据为中心,指令服务于数据●java, python, golang等
三种处理逻辑顺序执行:程序按从上到下顺序执行选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行循环执行:程序执行过程中需要重复执行多次某段语句
创建十个用户:[ root@localhost ~]#echo user{1..10}| xargs -nl useradd
Linux系统中的Shell是-个特殊的应用程序,它介于操作系统内核与用户之间,充当了一一个“命令解释器”的角色,负责接收用户输入的操作指令(命令) 并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。常见的Shell解释器程序有很多种,使用不同的Shell时,其内部指令、命令行提示符等方面会存在一些区别。 通过/etc/shells 文件可以了解当前系统所支持的Shell 脚本种类。
Shell的作用一命 令解释器,“翻译官”●介于系统内核与用户之间,负责解释命令行
用户的登录Shell登录后默认使用的Shell程序,一 般为/bin/bash不同Shell的内部指令、运行环境等会有所区别[root@localhost ~]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin
linux中常见的shell●bash:基于gun的框架下发展的shell●csh:类似c语言的shell●tcsh:整合了csh提供了更多功能●sh:已经被bash替换●nologin:让用户无法登录bash (/bin/bash) 是目前大多数Linux版本采用的默认shell
什么是shell脚本
●就是将命令按顺序--列出, 最后自动执行●执行需要权限,也可以直接使用绝对●脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本
构成1.脚本申明(解释器) :第- -行开头"#! /bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行。#! /bin/bash为默认的解释器还有其他类型的解释器。比如:#! /bin/python #! /bin/expect2.注释信息:以#开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。3.可执行语句:比如echo命令用于输出” ”之间的字符串
vim /root/first.sh#! /bin/bash
#This is my first Shell- Script.
cd /bootecho "当前的目录位于:"pwdecho "其中以vml开头的文件包括:"ls -1h vml*
编写脚本代码使用vim文本编辑器每行一 条Linux命令,按执行顺序依次编写[root@localhost ~]# vim first.shcd /boot/pwdls -Ih vml*
赋予可执行权限●使脚本具有可执行属性[root@localhost ~]# chmod +x first.sh
Shell脚本的执行方法一”:指定路径的命令,要求文件必须有x权限。chmod +x /root/first.sh指定绝对路径: /root/first.sh指定相对路径: ./first.sh方法二:指定Shel1来解释脚本,不要求文件必须有x权限。sh脚本路径: sh first.shsource脚本路径: . first.sh 或者source first.sh
管道操作|将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
cmd1 | cmd2 [... | cmdn]
ps aux I wc-1echo "abc123" | passwd --stdin zhangsan
执行脚本文件方法一:脚本文件路径(绝对路径与相对路径)[root@localhost ~]# ./first.sh方法二: sh脚本文件路径[root@localhost ~]# sh first.sh方法三: source脚本文件路径[root@localhost ~]# source first.sh
变量的作用:用来存放系统和用户需要使用的特定参数(值)变量名:使用固定的名称,由系统预设或用户定义变量值:能够根据用户设置、系统环境的变化而变化
变量的分类自定义变量:由用户自己定义、修改和使用环境变量:由系统维护,用于设置工作环境位置变量:通过命令行给脚本程序传递参数预定义变量: Bash中内 置的一. 类变量,不能直接修改
交互式硬件设备标准输入:从该设备接收用户输入的数据标准输出:通过该设备向用户输出数据标准错误:通过该设备报告执行出错信息
赋值时使用引号●双引号:允许通过$符号引用其他变量值●单引号:禁止引用其他变量值,$视为普通字符●反撇号:命令替换,提取命令执行后的输出结果从键盘输入内容为变量赋值read [-p "提示信息"]变量名
变量作用范围默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shel1环境中能够继续使用。格式1: export 变量名格式2: export 变量名=变量值
定义一个新的变量●变量名以字母或下划线开头,区分太小写,建议全大写。变量名=变量值
查看变量的值echo $变量名! [root@localhost ~]# Product= Python[root@localhost ~]# Version=2.7.13[root@localhost ~]# echo $ProductPython[root@localhost ~]# echo $Product $VersionPython 2.7.13
设置变量的作用范围格式1: export 变量名格式2: export变量名=变量值[root@localhost ~]# echo "$Product $Version“Benet 6.0[root@localhost ~]# export Product Version[root@localhost ~]# bash[root@localhost ~]# echo "$Product $Version"Benet 6.0[root@localhost ~]# exit
整数变量的运算expr 变量1 运算符 变量2 [ 运算符变量3] ...常用运算符加法运算: +减法运算: -乘法运算: \*除法运算: /求模(取余)运算: %
环境变量环境变量由系统提前创建,用来设置用户的工作环境
配置文件: /etc/profile、 ~/ .bash profile
使用env命令可以查看到当前工作环境下的环境变量
变量USER表示用户名称,HOME表 示用户的宿主目录,LANG表示语言和字符集,PWD表 示当前所在的工作目录.
变量PATH表示可执行程序的默认搜索路径
常见的环境变量●PWD、PATH●USER 、SHELL、HOME
echo $PATH #查看当前搜索路径PATH="$PATH:/root" #将/root目录添加到搜索路径export PATH="$PATH: / root" #输出为全局环境变量first.sh
只读变量●用于变量值不允许被修改的情况[root@localhost ~]# name=cloud[root@localhost ~]# readonly name //设 置为只读变量[root@localhost ~]# echo $namecloud[root@localhost ~]# name=yun-bash: name: readonly variable //只 读变量不可以被重新赋值br/>[root@localhost~]#[root@localhost ~]# unset name //只读变量不可以被删除-bash: unset: name: cannot unset: readonly variable
位置变●表示为$n,n为1 ~9之间的数字[root@localhost ~]# ./myprog.sh one two three four five six
预定义变量$#:命令行中位置变量的个数$*:所有位置变量的内容$?: 上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错$0:当前执行的进程/程序名
bash不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk处理。#! /bin/bash#加f=$(echo "4.3+2.5" Ibc)echo "4.3+2.5=$f"
#减f=$(echo "4.3-2.5" Ibc)echo "4.3-2.5=$f" .
#乘f=$ (echo "4. 302.50" Ibc)echo "4.32.5=$f"
#除f=$(echo "scale=2;4.3/2.5"Ibc)echo "4.3/2. 5=$f"
#混合运算f=$(echo "2.2/(2.2-1.1)2+1.1"1bc)echo "2.2/ (2.2-1.1)2+1.1=$f"
#加
f=$(awk 'BEGIN{print 4.5+3.4 }')echo "4.5+3.4=$f"
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~