【linux应用与开发典型实例精讲(邱铁)】第四章shell程序设计

第四章 shell程序设计

  1. read命令与-p -t参数的使用
    -p prompt 设定提示信息;-t timeout 超时时间限制

  2. select var in str1 str2 … :用户从str1,str2…中选择一个键盘输入到var变量中,常用来实现选择菜单。

  3. { } 花括号的强制整体标识
    例:[ $1 ='-n' ] && { echo "hello" ls }当前一个条件为真时,后面才会输出hello并打印文件列表;若没有花括号,则一定会打印文件列表

  4. 引号----取消转义符号的作用
    双引号—取消通配符与分隔符的转义,但保留变量引用的能力(find中用双引号+通配符,是因为-name,代表着文件名,理解为 * 仍有效*)
    单引号----全部取消
    直接在shell输入aaa bbb会被默认为两个字符串;“aaa bbb”则被认为是一个字符串

  5. find 命令(以目录为查找基础)与rm命令的连用
    在这里插入图片描述rm { }:固定搭配,删除前面找到的文件,原因未知

  6. shell脚本对空格有严格的规定,赋值语句等号两边不能有空格,而字符串比较,等号两边必须有空格—倘若对空格把握不好,尽量留空格

    赋值时: i=1 // =用作赋值时,两边绝对不能有空格
    比较时: if [ $a = $b ]   // =用作比较判断时,等号两边必须有空格
    整数比较:if [ a -xx b ] //中括号前后一定要加空格否则会报错

    变量的引用是用 符 号 加 上 变 量 名 符号加上变量名 x或者${x},变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号,这是个好习惯,既便于阅读,又不易出错

  7. . 与 ./ 的意义是一样的,都代表当前目录,在find与ls中都可使用—相当于在当前pwd的目录下列出文件列表。

  8. linux修改文件名及后缀–linux不以文件后缀来区分文件类型,所以我们可以自己修改

mv  a.txt  b.sh
  1. expr在进行数值运算时,需要注意各字符间的空格:
 echo `expr $i + 1`---echo $(expr $i + 1)

而$[]不需要空格–但 $ []计算功能在脚本中无法使用原因是我在执行脚本时使用的是sh命令,sh编辑器中没有 $ []功能,使用 bash tst1.sh 1 2 3即可解决问题

  • ${}—变量引用 ,这样用观察更清晰,{}界定变量范围,如 $ {A}B与 $ AB; 子串截取
  • [ ] − − 等 价 于 []--等价于 [](())–数值计算—因为它不是命令,所以需要与echo连用才可输出
  • $()----命令替换—但不是所有shell编辑器都兼容,比反撇号更清晰
  1. let命令
    用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来
    在这里插入图片描述
    这种有分号是错误的,let要想执行多个表达式,则必须在同一行且以空格分隔
  2. cp复制命令
    1. 目录到目录:
      如果dir2目录不存在,则可以直接使用cp -r dir1 dir2即可。
      如果dir2目录已存在,则需要使用cp -r dir1/. dir2
      如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。
    2. 文件–已有目录:cp a.c dir1;文件到新目录:mkdir dir2;cp a.c dir2
    3. 文件到文件:cp a.c b.c
    4. -r:对目录递归复制
  3. 文件备份shell命令编写—这里在编写时花费了大量时间,对字符串相关操作完全不熟,以后需要深入研究练习
#!/bin/bash
ctime=`stat $* | grep "最近改动"`
#获取最近改动的时刻 
ctime=${ctime:5:19}
echo $ctime   
#${}的截取子串用法
name=$*
#变量的直接连接很简单------
name=${name%.*}_
#${}的替换用法
ctime=${ctime/ /-}
cp $* /home/new_top/_backup/$name$ctime
  1. #注释只能从一行开头注释
  2. stat filename查看文件各种属性
  3. 对变量的字符串截取与替换-----${ }—详情见博客:https://blog.csdn.net/weixin_44244371/article/details/103539800
  4. 在截取时,汉字也是一个字节 ;
  5. 命名文件时不能直接用空格,需要用转义字符"/"
  6. cp命令文件到已有目录并重命名的方法掌握
  7. 还需深入学习的问题及知识
    1. 变量与文件字符串截取练习题以及cut ,sed,awk,${ }命令的使用
    2. 二进制转化为十进制数的shell命令编写—见书p73
      未完待续…191214
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值