Linux Shell脚本塔防礼包攻略的作者简介


Shell是一个命令解释器它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令Shell就执行一条。这种从键盘输入命令就可以立即得到回应的对话方式,称为交互的方式

当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时该程序文件就被称为Shell脚本塔防礼包。 在Shell脚本塔防礼包裏内置了很多命令、语句及循环控制然后将这些命令一次性执行完毕,这种通过文件执行脚本塔防礼包的方式称为非交互的方式 Shell脚本塔防礼包语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件以及绝大对数的启动文件都是纯文本类型的文件。

Shell 脚本塔防礼包的类型 Shell脚本塔防礼包语言是弱类型语言(无须定义变量的类型即可使用)在Unix/Linux中主要有两大类shell: 

Shell脚本塔防礼包的执行通常鈳以采用以下几种方式。

2、path/script-name./script-name    在当前路径下执行脚本塔防礼包需要将脚本塔防礼包文件的权限改为可执行。然后使用脚本塔防礼包的绝對路径或相对路径就可以直接执行脚本塔防礼包了

3、source script-name.  script-name 这种方法通常是使用source或 “.”(点号)读入或加载指定的Shell脚本塔防礼包文件,然后依佽执行指定的Shell脚本塔防礼包中的语句这些语句将在当前父 shell 脚本塔防礼包进程中执行(其他几种模式都会启用新的进程执行该脚本塔防礼包进程)。

Shell脚本塔防礼包编写规范

Shell脚本塔防礼包的开发规范及习惯非常重要虽然这些规范不是必须要遵守的,但有了好的规范和习惯鈳以大大提升开发效率,并能在后期降低对脚本塔防礼包的维护成本

2、在shell脚本塔防礼包中,跟在 # 后面的内容表示注释用来对脚本塔防禮包进行注释说明,注释部分不会被当做程序来执行仅仅是给开发者和使用者看的,系统解释器是看不到的更不会执行。注释可以自荿一行也可以跟在脚本塔防礼包命令的后面与命令在同一行。 注释尽量不要使用中文在脚本塔防礼包中最好也不要有中文。

3、Shell脚本塔防礼包的开头会加版本、版权等信息

4、在shell脚本塔防礼包中尽量不用中文注释尽量用英文注释,防止本机或切换系统环境后中文乱码的困擾

5、Shell脚本塔防礼包的命名应以.sh为扩展名 例如:1.sh

6、成对的符号应尽量一次性写出来,然后退格在符号内增加内容以防止遗漏。这些成对嘚符号包括: {}、[]、‘’、“”  等

7、中括号[]两端至少要有1个空格因此,键入中括号时即留出空格[  ]然后在退格键入中间内容,并确保两端嘟至少由一个空格

8、对于流程控制语句,应一次性将格式写完再添加内容。 如:一次性完成for循环语句的格式

9、通过缩进让代码更易读如:

10、对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格需要强引用的,则用单引号(‘’)如果是命令的引用,则用反引号(``)

11、脚本塔防礼包中的单引号、双引号及反引号必须为英文状态下的符号。

简单地说变量就是用一个固定的字符串(也可能是字符、数字等的组合)代替更多、更复杂的内容,该内容里可能还会包含变量、路径、字符串等其他内容 变量是暂时存储數据的地方及数据标记,所存储的数据存在于内存空间中通过正确地调用内存中变量的名字就可以读取出与变量对应的数据。

变量的赋徝方法为: 先写变量名称紧接着是 "=" ,最后是值中间无任何空格。 通过echo命令加上  $变量名即可输出变量的值。 双引号以防止出错变量嘚值一般要加上。

  • 双引号:允许通过$符号引用其他变量值
  • 单引号:禁止引用其他变量值$视为普通字符
  • 反撇号:命令替换,提取命令执行後的输出结果 全局变量的定义方法 export 变量名

位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量是在程序名之后输入的参数。 位置参数之间用空格分隔Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推$0 是一个特殊变量,它的内容是当前这个shell程序的攵件名所以 $0 不是一个位置参数。

假如我现在有一个 1.sh脚本塔防礼包文件内容如下

当我执行时,我在文件名后加3个参数

预定义变量和环境變量相类似也是在Shell一开始就定义的变量,不同的是用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符號组成 常见的Shell预定义变量有以下几种。

  • $# :位置参数的数量
  • $* :所有位置参数的内容
  • $? :命令执行后返回的状态0表示没有错误,非0表示有错誤
  • $$ :当前进程的进程号
  • $! :后台运行的最后一个进程号
  • $0 :当前执行的进程名

假如我现在有一个 1.sh脚本塔防礼包文件内容如下

echo $# #打印出位置参数嘚数量 echo $* #打印出位置参数的内容 echo $? #打印出命令执行后返回的状态 echo $$ #打印出当前进程的进程号 echo $0 #打印出当前进程的进程名

当我执行时,我在文件名后加3个参数

Shell中常见的算术运算符

Shell 中常见的算术运算命令

双小括号 (())  数值运算命令的用法

双小括号 (()) 的作用是进行数值运算与数值比较它的效率佷高,用法灵活是Linux下常用的运算操作符。其操作方法如下:

let 运算命令的用法

let运算命令的语法格式为: let 赋值表达式  

let 赋值表达式的功能等同於“((赋值表达式))” 范例:  给变量 i 加8

2、expr配合变量计算

expr在Shell中可配合变量进行计算但需要用反引号将计算表达式括起来。

3、利用 expr 计算字符串的長度

bc 是UNIX/Linux下的计算器除了作为计算器来使用,还可以作为命令行计算工具使用

交互模式 在shell命令行直接输入 bc 及能进入bc语言的交互模式

bc也可以進行非交互式的运算方法是与 echo 一起使用,所以我们就可以写在脚本塔防礼包里面

Shell脚本塔防礼包的条件测试

通常在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作有时候也会与 if 等条件语句相结合,来完成测试判断以减少程序运荇错误。

文件存在且为目录则为真
文件存在且为文件则为真
文件存在且大小不为0则为真
文件存在且可执行则为真
文件存在且为链接文件则為真
文件f1比文件f2新则为真
文件f1比文件f2旧则为真

注:(())不能用于文件测试文件测试一般常用的是 []

若字符串长度不为0,则为真
若字符串长喥为0则为真
若字符串1等于字符串2,则为真
若字符串1不等于字符串2则为真

在[]以及test中使用的比较符号 在(())和[[]]中使用的比较符号
  • "="和"!="也可以在[]中莋比较使用,但在[]中使用包含"<"和">"的符号时需要用反斜线转义,有时不转义虽然语法不会报错但是结果可能不对。
  • 也可以在[[]]中使用包含“-gt”和“-lt”的符号但是不建议使用

在[]和test中使用的操作符 在[[]]和(())中使用的操作符
and ,与两端都为真,才为真
or 或, 两端有一个为真就为真
not ,非 两端相反,则结果为真

if语句对于字符串的匹配

case条件语句相当于多分支的if/elif/ellse条件语句但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本塔防礼包等企业应用场景中

break 、continue在条件语句及循环语句(for、while、if等)中用于控制程序走向;而exit则用于终止所囿语句并退出当前脚本塔防礼包。

如果省略 n 则表示跳出整个循环,n 表示跳出循环的成熟
如果省略 n 则表示跳过本次循环,忽略本次循环嘚剩余代码进行循环的下一次循环。n表示退到第 n 层继续循环

}


zftp 命令允许直接在 zsh shell命令行操作完整嘚FTP会话!可以在 zsh shell 脚本塔防礼包中使用这些命令直接在脚本塔防礼包中进行文件传输。

要删除已安装的模块用 -u 参数和模块名。

在使用 let 命囹时应该在算式前后加上双引号,这样才能使用空格

注意,使用浮点数会带来精度问题为了解决这个问题,通常要使用 printf 命令并指萣能正确显示结果所需的小数点精度。

第二种方法是使用双圆括号

示例: 结合了两种定义数学运算的方法

注意,可以将双圆括号放在算式两边(前面加个美元符)或整个赋值表达式两边两种方法输出同样的结果。

如果一开始没用 typeset 命令来声明变量的数据类型那么 zsh shell 会尝试洎动分配数据类型。

现在拥有了一个完整的数学函数库

zsh 中的每个结构化命令采用的语法都跟 bash shell 中的一样。zsh shell 还包含了另外一个 repeat 的结构化命令

repeat 命令使用如下格式:

param 参数必须是一个数字或能算出一个数值的数学算式。repeat 命令就会执行指定的命令那么多次

}

我要回帖

更多关于 脚本塔防礼包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信