LINUX(4) shell scripts

3 篇文章 0 订阅

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 
    程序段落
done

untile [ 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内容显示到屏幕上

shell中中括号,小括号,大括号,单引号双引号的作用:
小括号:
1.命令组,括号中的命令会新开一个 shell 顺序执行,所以括号内的变量不可以被脚本余下的部分使用,括号中多个命令用分好隔开
2.命令替换
3.初始化数组,如 array=(a b c d )

单中括号:
bash 的内部命令,[ 和 test 的是等同的,if/test 机构中左中括号是调用 test 的命令标识,右中括号是关闭条件判断的,test 和 [ ] 中可以用的比较符只有 == 和 != ,且两者都是用于字符串的比较,不可以用于整数比较,整数比较只可以用 -eq -ge 这种形式

双中括号:
[[ 是 bash 程序语言的关键字,并不是一个命令,支持字符串的模式匹配,使用 [[…..]] 条件判断结构,能够防止脚本中的许多逻辑错误,比如,&&,|| ,< 和 > 等都可以在其中使用,但是在单中括号中使用就会报错

大括号:
1.大括号扩展。在大括号中不允许有空白,除非这个空白被引用或转义。对大括号中以逗号为分隔符的的文件列表进行拓展,对大括号中以点点(..)为分隔符的顺序文件进行拓展
2.代码块,又称为内部组,与小括号不同,大括号不会新开一个 shell 运行,脚本余下的部分可以用括号内的变量,括号内的命令用分号隔开,最后一个也必须有分号,{}的第一个命令和左括号之间必须要有一个空格。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值