LINUX(4) shell scripts

来源:互联网 发布:java long 长度获取 编辑:程序博客网 时间:2024/06/02 03:25

shell script 即是针对 shell 所写的脚本(程序),这个程序是使用纯文本文件,将一些 shell 的语法和指令写在里面。

注意事项:

  • 指令的执行是从上而下,从左到右的分析与执行
  • 指令,选项和参数之间的多个空白会被忽略掉
  • 空表行也被忽略掉,tab视为空格
  • 如果读取到一个 Enter 符号,尝试开始该行命令
  • 如果一行的命令太多,可以使用 [ [Enter]] 来延伸到下一行

撰写好的程序可以一行一行的执行,执行这个文件的三个方法:

  • 直接指令下达:shell.sh档案必须具备可读和执行的权限然后绝对路径或者局部路径执行或者 变量 [ PATH ] ,将 shell.sh 放在 PATH 的指定路径下,可以直接执行 shell
  • 以 bash 程序来执行

bash文件中 #!/bin/bash 的作用是宣告档案的语法使用的是 bash 语法。当这个程序执行的时候,他就可以加载 bash 相关环境配置文件。
需要在文件中将一些重要的环境变量设置好

script 执行方法差异:
直接执行的方式或者bash
这里写图片描述
在 sh02.sh 执行完之后,子程序 bash 内所有的数据就被移除了
利用 source 执行
这里写图片描述
sh02.sh 的各项动作都会在父程序中生效

判断符号 []
使用中括号进行判断需要注意下面一些:

  • 中括号中每一个组件需要空格键来分隔
  • 在中括号内的变数,最好都用双引号括起来
  • 中括号内的常数,最好都用单或者双引号括起来

参数
/path/to/scriptname opt1 opt2 opt3
依次对应于 $0 $1 $2 $4
即 script文件对应于变量$0,第一个参数对应于变量 $1,依次类推
除了这些数字变量外,还有一些特殊的数字变量可以在 script 内呼叫:

  • $# : 表示后接的参数个数,上例为4。
  • $@ : 代表[ “$1”“$2”“$3”“$4”],每个变量是独立的
  • $* : 代表 [ “$1 $2 $3 $4”]

这里写图片描述
这里写图片描述

条件判断式
单层简单条件判断式:

if [ 条件判断式 ]; then    当条件判断式成功时,可以进行的操作;fi 

fi 将 if 反过来写,结束 if 之意
如果有多个判断条件

  • && 代表and
  • || 代表or
[ "$yn" == y -o "$yn" == Y ] //或者[ "$yn" == y ] || [ "$yn" == Y ] 

多重,复杂条件判断式:

if [ 条件判断式 ]; then    当条件判断式成立时,可以进行的操作;else     当条件判断不成立时,可以进行的操作;fi

或者可以有更复杂的

if [ 条件判断式1 ]; then    当条件判断式1成立时,可以进行的操作;elif [ 条件判断式2 ]; then     当条件判断2成立时,可以进行的操作;else    条件12均不成立可以进行的操作;fi

利用case …. esac 判断:

case \$变量名称 in     "第一个变量内容")        程序段        ;;    "第二个变量内容"        程序段        ;;    *) //最后一个变量内容会使用通配符代替所有的其他值        exit 1         ;;esac

利用function功能

function fname(){    程序段}

fname是自定义的指令名称,程序段是要执行的内容

循环loop
while do done , untile do done(不固定循环)

while [ condition ]do     程序段落doneuntile [ condition ]do     程序段落done

for…do…done(固定循环)

for var in con1 con2 con3...do     程序段done

以一次循环的时候 var 的值是 con1 ,第二次循环的时候 var 的值是 con2 ,依次类推。

for…do…done 数值处理

for((初始值;限制值;执行步阶))do    程序段done

shell程序的debug
sh [-nvx] script.sh
-n:不执行script,仅检查语法问题
-v:在执行script之前,先将script内容输入到屏幕上
-x:将使用到的script内容显示到屏幕上

原创粉丝点击