SEHLL 脚本第一章

shell是什么

1、双向的把人类语言转换成计算机可识别的二进制语言,把计算机语言转换成人类可识别的语言

2、shell介于人和计算机中间作为解释器的存在

shell脚本:执行文本当中的特定命令

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

对应用程序进行控制,脚本都是以文本形式保存。只在调用时才进行解释或编译

按行执行

linux系统中的shell的种类:

bash:linux默认的解释器

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

csh:类似于c语言的shell

nologin:禁止用户登录

查看系统自带的shell命令:cat /etc/shells

查看用户登录的shell:cat /etc/passwd (不指定,默认都是bash) cat /etc/passwd | grep root

shell脚本构成:

//开头// 注明解释器 ,默认解释器可以不写 #!/bin/bash/ #!/usr/bin/python

//执行语句// :执行语句,都是系统支持的执行语句。只要系统能够执行的语句,包含第三方扩展的命令,都可以作为脚本的执行命令

//注释语句//以#作为注释,注释的代码将不会被执行

脚本执行的三种方式:

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

sh

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

//赋权执行//:chmod+x chmod 777 [

chmod 777 [脚本名称] ./ //相对路径执行,只能在当前目录下执行//

/opt/ 脚本名称] // 绝l's对路径执行//

两种方式都需要有执行权,以绝对路径执行是生产中的主要方式 sh source 只限于调试阶段

脚本一般是和定时任务配合使用crontabe -e

分时日月周 /opt/first.sh

重定向输出 >

把指定结果保存到文件中,会覆盖原有内容

重定向输入 < 要把setenforce 0 关掉

从指定文件中读取内容,面交互

重定向输出 >>

会在当前文本内容尾部增加,不会覆盖当前文本内容

重定向错误输出

2>

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

2>>

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

混合输出 &>

标准和错误都会保存到指定文件中,会覆盖原有内容

管道符 |

把前一个命令输出的结果(文本内容)作为后一个命令的参数(操作对象)

shell变量

变量的作用:用来存放系统和用户需要使用的特定参数(值)

变量:可以改变的类型和范围。

用户指定变量(自定义变量)

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

变量的类型:

int:整数

string :字符串

布尔:true false

浮点:小数

变量名:

固定名称、用户自定义、默认原则:

1、不用linux系统的操作命令或者系统命令指定变量名

2、不用中文作为变量名

3、不用特殊字符作为变量名 _可作为开头

4、最好使用名称的英文来指定变量名

5、注释,解释代码用途,万一离职可以交接

定义变量:

[变量名]=[变量值] 变量名区分大小写

查看变量值:1254

echo $[变量名] echo${ab}${ac}避免出现歧义

只读变量:

readonly [变量名]

不能重新赋值,不能被删除

删除变量:

unset [变量名]

赋值的时候 引号的作用:

`

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

' '

[单引号]强引用:用单引号打印变量只会输出变量名称,不会输出变量值。不会引用变量真实的值

" "

[双引号]弱引用:打印变量的赋值(一般使用双引号)

在赋值的时候’‘ 和''''没有区别

通过read命令来获取变量

-p[指定提示符]、提示用户输入提示信息

 默认的情况下,新定义的变量只能在当前环境下使用

全局变量:export //声明全局变量

在程序和脚本中以及全部的shell环境中都可以被引用。一旦有重命名会非常麻烦,难以调试

临时声明,只在当前shell中,重启失效

/etc/profile

/root/.bashrc_profile

/root/.bashrc 只对root用户生效

环境变量

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

系统环境变量: //所有人都可见,都可用,可以直接识别,直接控制

用户级环境变量://只对当前用户开放

echo &HOME //用户的宿主目录

&USER //表示用户名称

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

$PATH //可执行的默认路径

位置变量

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

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

$0(表示命令本身) $1$2(表示从左往右依次赋值) 要在脚本执行时在脚本外部传入变量值

预定义变量

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

$*

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

$* $@ 在表现形式上有区别 在不加引号时表现一至

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

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

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

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

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

整数运算

只能用于整数,不带小数点

+-*/ %取余

i=$((12+15))

i=$(expr 12\*5)表示乘法

i=$[12*5]

let i=12*5

引用变量前面要加$符号

i++ :i=$(($i+1))先赋值,再加1。

i-- :先赋值再减

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

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

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

bc简易的计算器

echo 2+8 | bc

可以进行小数运算

实验:从$1到$11,传参

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值