Shell编程

shell编程
php

shell变量的特色?python

——弱类型shell

——默认字符串型(字符串型是不能直接进行加减乘除数值运算,所以须要进行数值运算时,须要将shell变量声明为数值型,不要使用默认值)编程

——能够把指令写到一个文件中,shell对这个脚本操做就能够一次执行多个操做。可是若是一条条执行会很麻烦,shell支持条件控制、循环嵌套特性vim


说明:数组

指定解析器

必定要在第一行执行解析器,咱们使用的是bash,固然也可使用python、ruby写脚本。ruby

语句即命令

咱们在学会一个命令时,放在命令行中就是命令,放到脚本中就是一条语句。bash

脚本中命令能够直接罗列,也能够包含到函数之中,经过呼叫函数名执行:服务器

 

命令对空格敏感,脚本语句对空格变态地敏感!函数

位置参数

脚本语言:

引用第一个sh时,使用$0($表示位置)。$#表明一共多少个参数。

操做:

脚本不在当前shell执行

咱们在执行任意一个脚本程序的时候,并非在这个shell执行,而是新开一个shell,虽然咱们看不到这个shell。

操做:

注:虽然获得了脚本的目的,可是当前目录并未改变,也就是说不是在这个shell中执行的操做。

其中vim中语句为:

若是想在当前shell执行语句:

注:当前工做目录已经变了。




declare命令

——用来声明变量类型

格式:

 

注:在这里要格外注意,咱们须要添加一个声明时用“-”,而不是“+”。

举例:

把变量声明为数值型

注:这里咱们能够明确看出,在默认状况下变量为字符型,所以c默认输出为11+22,若是想一想要输出加法运算的结果,则须要将c声明为int类型(a、b不须要声明为int,由于声明c后,在进行a+b运算时会自动将后面进行转化)。

能够查看变量属性:

声明数组变量

操做:

注:在查看数组的时候,$后面须要添加{},在不加下标,直接以数组名给出时默认显示第一个数组元素,加上*时,显示所有。

声明环境变量

注:环境变量的声明实际上也是declare命令。-X表示声明为环境变量。若是这样操做:

Export aa,即表示把aa声明为环境变量,则在执行bash-->set这两个指令时只能看到aa,不能看见bb。Bb只会出如今当前目录。

声明变量只读属性

操做:

注:这里不能修改和删除。甚至咱们执行撤销属性都不能够。在实际应用中要格外注意,若是将制度属性的变量加到某一系统环境变量中在开机时会自启动,这样会出错。咱们这里设置的是临时环境变量,系统重启后消失。所以,只读属性并非很好用,实际中尽可能少用。

查看变量属性

数值运算方式

数值运算方法1

注:这种方法须要敲不少指令,麻烦。

方法2exprlet数值运算工具

操做:

注:在没有空格的时候不会进行直接加的运算,而是当作字符串运算。

 

方法3:”$((运算符))”或”[运算符]

注:推荐这种写法”$((运算符))”

区分如下的方式:$(运算符)——它的做用是把系统命令先执行,再把命令的结果赋予变量。

 

 

运算符

注:优先级越高数值越大。实际中用到的数值运算并很少。

变量测试

简介

只针对shell语言有效,比较复杂。在实际中能够用其余方式取代,格式复杂,语法简单,了解便可。

注:在优化时用到,好比php写的网页脚本,访问量很大,就须要优化。在实际中shell通常是管理员用(由于咱们的目的就是办公自动化),因此要求逻辑要清晰,而这种方式并非很适用。

例子1:测试x=${y-新值}

 

 

循环控制

脚本

 

可是这个脚本有局限性,就是引入另一个文件再执行这个脚本时不起做用,也就是说这个文件只针对于某一个特定状况。须要改进:

在tab上方有导引号``,若是在vim中输入命令:形如’pwd’,导引号就能输出命令的输出。

这样脚本就具备通用型了。

 

远程执行

每次都链接服务器仍是有点麻烦,咱们能够在本地执行一个脚本,直接把服务器上的事办了。

注:引号中的语句就会在服务器中执行。

 

确认执行:

默认是y。

可是若是有一天咱们删除了其中一个颇有用的文件,好比jim.txt再执行脚本时:

 

这时会提示是否删除删除这个脚本,这种提示功能很是好。咱们能够选择no不删除。

 

用其余语言写脚本

Bash的语法偏机器思惟。比较晦涩。

相关文章
相关标签/搜索