初始Sell脚本记录一下学习过程并且完成一个实际案例

Sell脚本初始语法介绍

==>编写规范
第一行,指定哪个程序来执行脚本
#!/bin/bash
或者
#!/bin/sh
这样的开头是证明一个Shell脚本的标准开始
接下来我们来写一个HelloWord的Shell脚本
写之前我们要创建一个Helloword.sh的文件
在这里插入图片描述
touch helloword.sh 创建一个文件夹
在这里插入图片描述
chmod 755 helloword.sh 修改文件权限
加入如下内容
在这里插入图片描述
执行结果
在这里插入图片描述
刚刚的那个指令
echo “data” —>表示在控制台输出data

接下来我们使用一下Shell中的判断和分支

if [ command ];then #开始
     符合该条件执行的语句
elif [ command ];then # 开始
     符合该条件执行的语句
else 
     符合该条件执行的语句
fi	 
# 结束if

if 判断中分为三种

  • 整数测试

  • 字符测试

  • 文件测试

  •   条件测试的表达式:
      [ expression ]  括号两端必须要有空格
      [[ expression ]] 括号两端必须要有空格
    
  •   组合测试条件:
      a: and
      o: or
      !:  非
    

    整数比较:

  •   eq 测试两个整数是否相等
      ne 测试两个整数是否不等
      gt 测试一个数是否大于另一个数
      lt 测试一个数是否小于另一个数
      ge 大于或等于
      le 小于或等于
      命令间的逻辑关系
      逻辑与:&&
      第一个条件为假 第二个条件不用在判断,最总结果已经有
      第一个条件为真,第二个条件必须得判断
      逻辑或:||
      第一个为真或者第二个为真都可以
    

    文件/文件夹(目录)判断

  •  [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
     [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
     [ -d DIR ] 如果 FILE 存在且是一个目录则为真。
     [ -e FILE ] 如果 FILE 存在则为真。
     [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
     [ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
     [ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
     [ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
     [ -r FILE ] 如果 FILE 存在且是可读的则为真。
     [ -s FILE ] 如果 FILE 存在且大小不为0则为真。
     [ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
     [ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
     [ -w FILE ] 如果 FILE存在且是可写的则为真。
     [ -x FILE ] 如果 FILE 存在且是可执行的则为真。
     [ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
     [ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
     [ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
     [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
     [ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
     [ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。
     [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
     [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
    

Shell 中的String操作

$ str=hello word

**# :截左取右,截到第一次匹配 **

$ echo ${str#*w}  
执行
[root@localhost ~]# ./helloword.sh
ord

##截左取右,匹配最后一次 匹配最后一个空格

#!/bin/bash
str="he llo wo rd"
echo ${str##* }
執行
[root@localhost ~]# ./helloword.sh
rd

% :截右取左 截到第一次匹配

str="he llo wo rd"
echo ${str% *}

执行结果
[root@localhost ~]# ./helloword.sh
he llo wo

%% :截右取左 截到最后一次匹配

str="he llo wo rd"
echo ${str%% *}
[root@localhost ~]# ./helloword.sh
he

匹配长度截取

  •  echo ${str:0:2}结果 he
     echo ${str:1} 结果为e llo wo rd
     还有echo {str:0-3:2} 和echo ${str:0-2} 都可以试一下
    

读取文件路径操作

  • basename
    取一个文件名(去掉后缀名),可以用basename。这个命令使用起来貌似有些死板。你要完整地写出 后缀名(想要剔除的部分)。
 basename /usr/bin/sort          -> "sort" 
 basename include/stdio.h .h     -> "stdio" 
 basename -s .h include/stdio.h  -> "stdio" 
 basename -a any/str1 any/str2   -> "str1" followed by "str2" 

dirname
取一个文件存储路径

 dirname /usr/bin/          -> "/usr" 
 dirname dir1/str dir2/str  -> "dir1" followed by "dir2" 
 dirname stdio.h            -> "."
find /usr/local/backups  查询数据
 -mtime +10 // -mtime 表示修改时间
  -name "*.*" 文件名
   -exec  即将执行一个进程指令
   rm -rf {} \; rm -rf{} \表示转义  ; 需要转义

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值