shell笔记

在学习的时候整理的零散笔记

shell就是解决我们运维工作中经常重复性的工作,我们将工作中每天要干的重复性的工作放在一个脚本中,然后运行,解决了大部分的重复性的工作,可以做更多的其它事情。

写shell的标准程序

*.sh                                         脚本的名字后面一般要加.sh的后缀

#!/bin/bash                          你用什么是什么shell写的脚本

#Autor : xxx                         你的名字

#Data:xxxx                           创建脚本的时间

#Descripton:xxxx                描述这个脚本是干什么用的

运行shell脚本的方法

1.bash  *.sh                           用bash  执行

2.chmod +x *.sh                  给shell脚本加执行权限

3.cat  *.sh |bash                    加管道符执行

4./data/*.sh                         用绝对路径执行

5.http://ip/*.sh|bash         远程调用服务器的脚本执行

6.将脚本放到任意一个$PATH变量里面的路径下面

 

bash -n  *.sh                         检查脚本中的语法错误

bash  -x  *.sh                        跟踪调试脚本

如果命令能识别变量就不用加$,如果不能就要加$

变量分为系统自带的只读变量和自定义的变量,系统自带的只读变量是不可更改的

自定义变量命名规则

1.不能使用系统的保留名字

2.只能使用数字,字母还有下划线,但是数字不能开头

3.设置变量的名字要见名知义

4.统一命名规则,大驼峰,就是所有的单词首字母大写

 

bash中的变量一般分为:局部变量 ;环境(全局)变量;本地变量;位置变量;特殊变量

局部变量:

局部变量只能对当前shell执行,不能在其它shell进程执行,不能在父进程和子进程执行

例:name=xixi                给xixi设置一个变量名字为$name

name=$USER          可以引用变量

name=`hostname`  可以引用命令

set :可以查看已经定义的所有变量

unset 变量  :删除变量,当我们执行完shell的时候会留下许多不用的垃圾变量,当过去很长的时间会在系统内留下许多的垃圾变量,会大量的占用系统的内存,建议用完变量以后就删除。

echo $$  可以查看当前的进程编号

echo $PPTD 可以查看父进程的编号

pstree -p       可以查看所有进程的编号

 

环境(全局)变量

全局变量能传到子进程,但是不能传到父进程,在变量附加完成以后要声明这个是全局变量 export

例 :name=xixi     export $name   或  export  name=xixi

env可以查看变量

 

环境变量

环境变量是bash自己建的特殊变量,能直接调用

例:$UID  $PATH $SHELL ……

 

只读变量和位置变量

只读变量是不能修改和删除的  readonly -p  或declare -r 查看只读变量

readonly   name=xixi   声明一个只读变量 ,只读变量的生命周期一般是当前进程的结束

位置变量是让写的脚本更灵活,加不同的参数,执行不同的功能

在脚本代码中调用通过命令行传递给脚本的参数

例:$1   $2   $3 …. 分别对应的a   b   c  …..   它对应的可以是文件也可以对应目录

$* :所有字符的参数

$@:所有字符的参数

$#:所有参数的个数

$0 :代表脚本的名字

shift:换位符,当一个程序执行完成以后整体的参数会往左移,默认移一位,也可以更改,也就是说$1对应的a执行完成以后,会自动的往左移一位,$1对应的变成b继续执行

 

退出状态

echo $?  查看脚本成不成功

0代表成功,1-255代表失败

echo $? 的判断是移最后一条命令的结果为准,成功的话返回值是0,不成功返回值是1-255

返回的值也可以修改 例:exit 10  就是将他返回的值改成了10 ,以后返回的特定的值代表特定的内容

 

算术运算

bash中的算术运算 let

例: 赋值  a=10     b=20

let   c=a+b      或    c=$[a+b]       或 c=((a+b))

可以用 echo $c 查看结果

 

逻辑运算

&与并且and | 或者 or

0&0 =0 假与假 是假

0&1 =0 假与真 是假

1&0 =0 真与假 是假

1&1= 1 真与真 是真

 

0 | 0 = 0 假或假 是假

0 | 1 = 1 假或真 是真

1 | 0 = 1 真或 假 是真

1 | 1 = 1 真或真 是真

短路与 && 短路或 | |

0&&0 =0

0&&1 =0

1&&0 =0

1&&1= 1

chdm1 && chdm2 如果命令1为假 ,命令2 不需要执行 反之命令1为真,需要执行命令2

chdm1 | | chdm2 如果命令1为真,命令2不需要执行 反之命令1为假,命令2不需要执行

 

条件测试

test 判断表达式是否成立

 qwe=qqq

 asd=www

 test $qwe = $asd

 echo $?

判断变量qwe和asd变量的值是否相同,相同得0,不同的1到255

或   [  $qwe = $asd  ]

 

判断字符串的长度

[   -z   $var  ]   判断var的长度是不是为0,0就是没有存东西

[ -n $var ] 或 [ $var ] 判断var是不是非空,0代表非空里面有东西,其他代表空

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95957

(0)
周亚飞周亚飞
上一篇 2018-04-14 20:41
下一篇 2018-04-14 21:13

相关推荐

  • Linux的发行版

    按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

    Linux笔记 2018-06-21
  • 描述计算机的组成及其功能

    计算机从功能模块上可分为:CPU、内存、输入、输出设备。 CPU由计算器和控制器组成,计算器负责计算数据,控制器则将数据送入计算器中,并将计算完成的数据送到其指定的位置中。 内存:为数据的存储地址,内存中的数据供CPU使用。内存的读写速度比硬盘的存储设备要快上很多。比内存读取速度要快的是缓存,其设计在CPU中。内存与输入输出设备相连,数据可以从输入设备读入到…

    Linux笔记 2018-06-21
  • liunx笔记

    操作系统 :硬件驱动    进程管理    内存管理   网络管理   安全管理 文件管理 。 编程语言   :低级语言   机器语言  :0和1   中级语言:c    高级语言 :java  python       php . 服务器三大操作系统  :windows      liunx    unix. liunx 内核  :住版本号   次版本号 …

    Linux笔记 2018-04-01
  • awk工具详解

    介绍了awk的使用格式,和它的一些使用技巧。

    2018-05-17
  • Linux系统计划任务

    在生活、生产环境中,我们可能遇到这样的场景,想在某个时刻,或者固定某个时间周期的在Linux系统中执行某项任务,例如,定时关机,定期自动清理垃圾文件等,at,crontab等命令就是帮你实现这样功能的。

    2018-05-06