shell编程规范与变量

什么是shell?

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

shell在中间,解释器,翻译官

linux系统的shell种类:

bash:linux默认shell

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

csh:类似c语言的shell

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

cat /etc/shells 查看当前系统的自带的shell

 

/etc/passwd  可以查看用户默认的shell,除非指定,默认都是bash

 

什么是脚本,为什么叫脚本语言?

扩建语言,动态语言,也是一种编程语言

控制软件应用程序,脚本都是以文本形式保存

只在调用时,才会进行解释或者编译

按行执行

执行文本中特定的命令

shell脚本构成  

cd /opt vim first.sh

 

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

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

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

默认的脚本格式名称:xxx.sh

脚本执行的三种方式:

不需要赋予执行权限的就可以执行的

sh source 一般只限于调试阶段

例如:sh first.sh     

        

 

 source first.sh

 

source点命令,也就是“.”,是bash的内部命令,自带的读文件当中可执行的命令,然后会加载到shell中,不用重启,直接生效

赋权执行:执行权限

chmod +x     /chmod 777

chmod 777 first.sh

./first.sh 相对路径执行,“.”表示当前目录(必须在当前目录)

 /opt/first.sh 绝对路径执行(可以不在当前目录执行)

 

**这两种都是需要赋予执行权限的,工作中一般都是从绝对路径中执行

脚本都是和定时任务来执行的

crontab -e       * * * * * /opt/first.sh

 重定向操作

重定向输出:> 把指定结果保存到文件中,覆盖原有的内容 echo 123 > 123

 

重定向输入:<从指定文件读取数据,也可以理解为面交互

例如 passwd --stdin dn < 123但是这个操作需要关安全机制

 

重定向输出:>>会在当前内容的尾部追加,不覆盖原有的内容 echo 789 >> 123  cat 123  123 789

 

重定向错误输出:2>,将错误的信息保存到指定文件,也会覆盖原有的内容

                            2>>,将错误的信息保存到指定文件,不会覆盖原有的内容

输入错误信息才有效 比如ehco(输入错误的命令)

混合输出&>,标准和错误都保存到文件当中,会覆盖原有内容

 

 

变量:可以改变,类型,和范围

计算器;变量需要有范围,类型, 用户指定变量(自定义变量)

你想干什么就得选定义出你要干的事情到底是什么,算法定义数字

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

变量的类型:int整数 string字符串 true false布尔 1.12 0.23浮点(小数)

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

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

2.不要用中文指定变量名

3.不能使用特殊符号开头,_除外

4.有个默认原则,最好使用名称的英文来指定变量名:computer,student

5.注释,注释的目的:解释一下你的代码用途;离职,工作好交接

怎么定义变量?
变量名=变量值

直接输a=1 或者b=1 变量是区分大小写的

aa=test                  AA=test1

 

查看变量的值

echo $aa    echo $AA   echo $AA$aa   echo ${AA}${aa}这样更安全,避免出现起义奇异

a=90

echo “卜润的成绩是:$a分”

 

只读变量:

stu=burun      readonly  stu   echo $stu     

1.只读变量不能重新复制,也不可以删除

 

删除变量

a=1   echo $a    unset  a    echo   $a

 

赋值的时候,引号的作用

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

a=`ps -aux | grep root`  echo $a

 

' ':单引号,强引号,用单引号打印变量,只会输出变量名,不会输出变量的值,只会打印变量的名称

 

“ ”:双引号,弱引用,打印变量的赋值

read命令来获取变量;-p指定要提示符,提示用户输入数据

 

 

变量的作用范围:默认情况下,新定义的变量只能在当前的shell中生效,也可以局部变量

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

export #声明全局变量

vim /etc/profile 可以加变量

 

一旦有重命名,可能导致位置的不确定性,难以调试,export临时申明,只能在当前shell中使用,重启失效

1./etc/profile 都所有人

2./root/.bashrc_profile ;/root/.bashrc 只能对root用户生效

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

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

echo $PWD显示所有环境变量路径

用户及环境变量:只能对当前用户开放和使用

echo $HOME用户的宿主目录

echo $USER表示用户的名称

echo $PWD表示当前所在目录

echo $PWD可执行程序的·默认路径

添加一个目录到环境变量中(即可以自动补齐)

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

$n:n表示的是数字,例如:1.2.3.4.5.6.7.8.9;到10及以上的参数需要用{}来表示即${10}

 

 

sh   weizhi.sh   10   20 :sh   weizhi.sh $0表示名本身

$1$2从左往右依次复制,要在脚本执行时,在外部传入变量值

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

$* $@:均表示命令或者脚本需要处理的参数 

 "s*"会把参数变成一个整体  s*不加引号,则分别处理

s@加不加“”都会把参数分开处理

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

 

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

 

 

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

整数运算

例如10+10 

10.0不是整数,带小数点系统判定不是整数

+-*/%

 第一种(())

第二种expr

这表示的乘法,其他一模一样,就expr类型乘法是这样

第三种[ ]

 

第四种 let

 

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

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

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

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

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

bc,简易的计算器,可以直接运算加减乘除 

 

可以整数

可以小数 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

- joke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值