日期:2014-05-16  浏览次数:20838 次

「学习笔记-Linux」学习Shell Script

学习Shell Script

Table of Contents

  • 1 什么是Shell Scipt
    • 1.1 程序书写
    • 1.2 程序执行
  • 2 简单Shell练习
    • 2.1 例1 接收用户输入
    • 2.2 例2 按日期建立相似名字的文件
  • 3 判断式
    • 3.1 测试文件是否存在
    • 3.2 test常用选项
      • 3.2.1 文件类型
      • 3.2.2 权限
      • 3.2.3 文件新旧比较
      • 3.2.4 整数,字符串,多重条件判断
    • 3.3 使用[]判断
  • 4 Shell Script 参数
  • 5 条件表达式
    • 5.1 if 结构
    • 5.2 if else 结构
    • 5.3 case
  • 6 函数
  • 7 循环
    • 7.1 while
    • 7.2 for
  • 8 shell script的追踪与Debug

1 什么是Shell Scipt

使用指令和基本程序设计结构写成的程序,可以完成复杂的处理流程

1.1 程序书写

#!/bin/bash
# Program:
#       This program shows "Hello Wrold" in your screen.
# History:
# 2013/2/3 on_1y First release

PATH=$PATH
export PATH
echo -e "Hello World!\a\n"
exit 0
  • 第一行 #!/bin/bash 说明使用的shell类型,不同shell语法可能不同,所以要说明使用的是哪种shell
  • 其它#开始的表示注释,注释一般需要说明
    • 程序功能
    • 版本历史
    • 作者及联系方式
  • 设置好PATH变量,以便直接可以调用相应路径下的命令
  • 程序主体部分
  • exit 0 表示程序执行成功,向环境返回0

1.2 程序执行

  • bash $bash sh01.sh #如果用sh sh01.sh而sh又不是指向bash,那么sh01.sh内的语法就会不一致,因为用 #sh去解释了bash语法写的shell script,针对这个程序,如果 #$type sh #得到sh is hashed (/bin/sh) #那么会输出-e Hello world!,而非Hello world!
  • $./xxx.sh $chmod +x sh01.sh $./sh01.sh
  • source $ source sh01.sh

注:用bash和用source的不同在于,用bash执行时,shell script其实是在在父程序bash下新建了一个 bash子程序,这个子程序中执行,当程序执行完后,shell script里定义的变量都会随子程序的结束而消失, 而用source执行时,是在父程序bash中执行,shell script里定义的变量都还在。

2 简单Shell练习

2.1 例1 接收用户输入