shell编程规范与变量

文章详细介绍了Shell的概念,作为用户与操作系统之间的接口,它如何解释用户命令。文章提到了不同类型的Shell,如bash、tcsh等,并讲解了如何查看当前Shell。接着,讨论了Shell脚本的构成、执行方式(包括source和赋权执行)以及重定向和管道操作。此外,文章还深入讲解了Shell变量的类型、定义、作用范围和相关操作,包括整数运算和使用bc进行计算。
摘要由CSDN通过智能技术生成

目录

shell的概念

1.概念:

2.shell的种类

3.查看shell

4.脚本的概念

5.shell脚本的构成

6.脚本执行的方式

1.不需要赋予执行权限就可以执行:

2.赋权执行:执行权限

7.重定向与管道操作:

重定向操作

8.shell变量的作用以及类型

变量的类型:

变量名的类型:

自定义的要求:

如何自定义变量:

赋值的时候,引号的作用:

删除变量:

只读变量:

read 通过命令来获取变量:

变量的作用范围:

环境变量:

位置变量:

预定义变量:

9.整数运算

符号:

写法:

 自增自减:

10.简易计算器bc


shell的概念

1.概念:

将人的语言转换成计算机的二进制,交给计算机内核处理,再把二进制转换成人类能识别的语言。

shell在中间,相当于解释器的作用

2.shell的种类

Linux系统的shell的种类:

(1)bash:Linux默认的shell

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

(3)csh:类似c语言的shell

(4)sh://已经被bash替换

(5)nologin:也是shell的一种类型,禁止用户登录。

3.查看shell

查看当前系统版本包含的所有shell:   cat /etc/shells

查看用户登录默认的shell:cat /etc/passwd //除非指定,默认都是bash

4.脚本的概念

是扩建语言,也可以理解为动态语言,也是一种编程语言。可以控制软件应用程序。脚本都是以文本形式保存,就是执行文本当中的特定命令。只在调用时才会进行解释或者编译。

特点:按行执行

5.shell脚本的构成

 

第一类:开头,注明解释器,#!/bin/bash #!/usr/bin/python

第二类:执行语句,都是系统支持的命令格式。只要系统能够执行的语句(包含第三方的扩展命令),都可以作为执行语句。

第三类:注释语句,#作为注释,注释的代码,不会被执行。

默认的脚本格式名称:xxx..sh(约定俗成)

6.脚本执行的方式

1.不需要赋予执行权限就可以执行:

source:点命令,也是一个符号,是bash的内部命令,自带的,主要作用就是读取文件当中的可执行命令,然后会加载到shell中,不用重启。

2.赋权执行:执行权限

想要执行都需要先赋予执行权限

对文件进行赋权方法

chmod +x 文件

chmod 777 first.sh

执行方法

这两种方式都必须要有执行权限。

(1)  ./:相对路径执行,.表示当前目录,只能在当前目录下执行

(2)  /opt/firsh.sh 绝对路径执行,表示可以在其他目录也可也执行

这是生产当中的主要执行方式,工作中都是赋权执行,sh和source只限于调试阶段。

都是以绝对路径来执行的。脚本都是和定时任务结合使用的

crontab -e

7.重定向与管道操作:

重定向操作

重定向输出:

(1) >:把指定结果保存到文件中,会覆盖原有内容

echo 456 > 123

(2) >>:会在当前的内容的尾部追加,不覆盖原有的内容

echo 135 >> 123

重定向输入:

(1)<: 从指定文件读取数据,也可也理解为免交互

setenforce 0关闭安全机制

passwd --stdin dn < 123 从指定123文件当中的内容作为dn用户的修改密码

从指定321文件当中的内容作为wc时的内容:

重定向错误输出:

(1) 2>:将错误信息保存到指定文件,也会覆盖原有的内容

(2) 2>>:将错误信息保存到指定文件,不会原有内容

混合输出:

(1) &>:标准和错误都保存到文件当中,会覆盖原有的内容

8.shell变量的作用以及类型

变量:变量需要有范围和类型。用户指定变量(自定义变量)

自定义变量:用户指定需要的参数

变量的类型:

(1)int 整数

(2)string:字符串

(3)布尔:true false

(4)浮点:1.12 0.23

变量名的类型:

固定名称,用户自定义,系统预设

自定义的要求:

(1)不用使用linux系统的操作命令或者系统命令来指定变量名,

(2)不要用中外文

(3)不能使用特殊符号开头,例如¥#^&*,但是可以使用_开头!!!

(4)最好使用名称的英文来指定变量名,例如computer,student

(5)注释,注释的目的:1.解释一下你的代码用途 2.万一你离职了,后面的人好交接。

如何自定义变量:

变量名=变量值(变量名是区分大小写的)

查看变量值:echo $abc

一次性查看多个变量值:echo ${AA}${aa}

赋值的时候,引号的作用:

(1) ``(波浪线按键的点):反撇号

作用:命令替换,把命令执行的结果,赋值给变量名

(2) ' ':单引号

作用:强引用,用单引号打印变量,只会输出变量名,不会输出变量的值,只会打印变量的名称,当成普通字符串。

(3) " ":双引号

作用:弱引用,打印变量的赋值

删除变量:

 unset 变量名

只读变量:

1.只读变量不能重新赋值

2.只读变量不能删除            //如果要删除,要么重启,要么从脚本里删除

read 通过命令来获取变量:

read -p " " x

x:变量名,一定要有

" ":提示内容,一定要有,什么都不写也可以

-p:指定提示符,提示用户输入数据

变量的作用范围:

默认情况下,新定义的变量只能在当前的shell中生效,也可也为局部变量

全局变量:在程序和脚本中以及全部的shell环境中都可以被引用

export //临时声明,只能在当前shell中生效,重启失效

export c=100

export d=200

想要其他shell也生效,需要写到/etc/profile文件中(/root/.bashrc_profile,/root/.bashrc,这两个只能对root用户生效),修改完后要source一下/etc/profile文件!!!!

一般不这么设置,一旦有重命名,就非常麻烦,可能导致未知的不确定性,难以调试。

环境变量:

介绍:系统提前创建好的,后者人工添加额,主要的作用就是用来设置用户的工作环境。比如配置系统行为,传递信息,控制程序执行。

种类:

(1)系统环境变量:所有人都可见,都可用

查看系统的环境变量路径:echo $PATH

(2)用户级环境变量:只能对当前用户开放和使用

指定查看用户级环境变量路径:echo $HOME echo $USER echo $PWD

$USER:表示用户名称

$HOME:表示用户的宿主目录

$PWD:表示当前所在的目录

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

如何添加一个目录到环境变量中

 

位置变量:

介绍:也叫命令行参数,脚本运行时,从外部传递变量值,让脚本来运行,可以根据需要来进行处理

$n:

n:表示的是数字 1 2 3 4 5 6 7 8 9 ${10},${11}也就是说10以上的参数要用花括号来表示。

sh weizhi.sh 10 20

           $0      $1 $2

从$1一直传到$11

预定义变量:

介绍:编程语言或者脚本解释器提供的,可以自动设置,而且是可以自动更新的,但是由编程语言和脚本解释器自动完成的,人工不能修改。

(1)$*,$@:表示命令和脚本需要处理的参数,两者有区别,

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

 

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

  

$*和$@在不加引号时,都会把参数分开处理。

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

 

(3)$?:表示一条命令或者脚本执行后的返回码,返回码是0,表示执行正确。所有非0的返回码,都表示执行错误。

 

$?只能返回上一次,最近的一次的命令或者脚本执行的返回码。

 

9.整数运算

符号:

+:加法

-:减法

  

*:乘法

/:除法

%:取余

写法:

(1)i=$(($a+$b)) i=$(($12+$15)) 引用变量前,一定要加$

(2)expr 引用变量前,一定要加$

除了乘法前需要加一个\,其他都一样。

 

(3)i=$(12*5) 引用变量前,一定要加$

(4)let i=12*5 引用变量前,一定要加$

 

 自增自减:

i++:先赋值,再加一

i--:先赋值,再减一

++i:先加再赋值,自加1

--i:先减再赋值,自减1

i+=2 每次自加2,先赋值,再加2

10.简易计算器bc

bc:

是一个简易的计算器,也可也支持运算,可以支持整数运算,也可以支持非整数运算。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值