七、学习Shell Scripts

一、scripts的撰写与执行

撰写注意事项:
(1)指令执行时从上而下,从左而右的分析与执行
(2)指令、选项与参数间的多个空白都会被忽略;空白行以及tab都会被忽略
(3)读取到一个Enter符号(CR),就尝试开始执行该命令
(4)若一行内容太多,这可以使用“[Enter]”来延伸至下一行
(5)"#"可作为注释符

执行方式:
例如/home/syf/shell.sh

  • 直接下达指令:shell.sh文件必须要具备可读可执行权限(rx)
    (1)绝对路径执行:/home/syf/shell.sh
    (2)相对路径执行:./shell.sh
    (3)变量“PATH”功能:将shell.sh放在PATH指定的目录内,例如~/bin/
  • 以bash程序来执行:bash shell.sh或sh shell.sh

在这里插入图片描述
注:第一行的#!/bin/bash宣告这个文件内使用bash语法
script执行方式的差异:
在这里插入图片描述

  • 直接执行的方式:直接指令下达,或利用bash,sh来下达脚本时,该script都会使用一个新的bash环境来执行脚本内指令,即子程序。而子程序完成后,子程序内的各项变量或动作将会结束而不会传回到父程序中。
    在这里插入图片描述
    在这里插入图片描述
  • 利用source执行脚本:在父程序中执行
    在这里插入图片描述在这里插入图片描述
    name.sh还在父程序中执行,因此各项动作都会在原本的bash上生效。这也是为什么你不登出系统而要让某些写入~/.bashrc的设置生效时,需要使用"source ~/.bashrc"而不能使用"bash ~/.bashrc".

二、善用判断式

2.1 利用test指令的测试功能
# test -e filename

在这里插入图片描述
常用指令:
关于文件名的文件类型判断
-e:该文件名是否存在
-f:该文件名是否存在且为文件
-d:该文件名是否存在且为目录
关于文件的权限侦测
-r,-w, -x:是否可读,可写,可执行
-u,-g,-k:是否具有SUID,SGID,Sticky bit属性
两个文件之间的比较(test file1 -nt file2)
-nt, -ot: file1是否比file2更新/更旧
-ef:判断是否为同一文件,主要意义在判定是否指向同一个inode
两个整数之间的判定
-eq, -ne, -gt, -lt, -ge, -le : 等于,不等于,大于,小于,大于等于,小于等于
判断字符串的数据
test -z string:判断string是否为空,空则返回true
test -z string:判断string是否为非空,非空则返回true
test str1 == str2, test str1 != str2
多重条件判定(test -r file1 -a -x file2)
-a: and
-o: or
! : 非

2.2 利用判断符号[]
2.3 Shell script的默认变量($0, $1)

三、条件判断式

四、循环(loop)

五、shell script的追踪与debug

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值