一、Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

二、脚本格式要求

  • 脚本 #!/bin/bash 开头
  • 脚本需要有可执行权限
  • 单行注释:#
  • 多行注释::<<! 换行符 注释内容 换行符 !

三、Shell脚本的常用执行方式

  • 方式一(输入脚本的绝对路径或相对路径)
    说明:首先要赋予脚本可执行权限,再执行脚本。相对路径:./*.sh,绝对路径:/root/*.sh
  • 方式二(sh 脚本)
    说明:不用赋予脚本可执行权限,直接执行即可。比如:sh *.sh

四、Shell变量

①变量分类

  • 系统变量
  • 用户自定义变量

②变量的定义与撤销

  • 定义变量:变量名=变量值
  • 声明静态变量:readonly 变量
  • 撤销变量:unset 变量,注意:静态变量不能撤销

③变量定义的规则

  • 变量名称可以由字母、数字、下划线组成,但是不能以数字打头
  • 等号两侧不能有空格
  • 变量名称一般习惯大写,这是一个规范,我们遵守即可

④将命令的值赋给变量

  • 一对反引号“,比如 A=`date`,将 date 命令返回的值赋给 A变量
  • $(),比如 A=$(date),将 date 命令返回的值赋给 A变量

⑤设置环境变量

  1. export 变量名=变量值 (功能描述:将Shell变量输出为环境变量/全局变量)
  2. source 配置文件 (功能描述:让修改后的配置信息立即生效)

⑥位置参数变量

作用:帮助我们获取 命令行的参数信息

  • $n 功能描述:n为数字,$0表示命令本身,$1-$9代表第1到第9个参数,10以上的参数需要用{}包含,如${10}
  • $* 功能描述:代表命令行的所有参数,把所有参数看作一个整体
  • $@ 功能描述:代表命令行的所有参数,把每个参数区分对待
  • $# 功能描述:代表命令行所有参数的个数

⑦预定义变量

Shell设计者事先已经定义好的变量,可以在shell脚本中直接使用

  • $$ 当前进程的进程号(PID)
  • $! 后台运行的最后一个进程的进程号
  • $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确

五、运算符

  • $((运算式))
  • $[运算式] 推荐使用
  • expr m + n 或者 expression 表达式。注意 expr 运算符间要有空格,如果希望将 expr 的结果赋给某个变量,使用“,\*,/,% 表示乘,除,取余

六、条件判断

  • [ condition ] (注意condition前后要有空格,condition非空返回true,空返回false)
  • [ condition ] && echo “ok” || echo “not ok” #效果类似Java的三元运算符

常用判断比较

  1. = 字符串比较
  2. 两个整数的比较
  • -lt 小于
  • -le 小于等于
  • -eq 等于
  • -gt 大于
  • -ge 大于等于
  • -ne 不等于
  1. 按文件权限进行判断
  • -r 有读的权限
  • -w 有写的权限
  • -x 有执行的权限
  1. 按照文件类型进行判断
  • -f 文件存在并且是一个常规文件
  • -e 文件存在
  • -d 文件存在且是一个目录

七、流程控制

  1. if 判断
    单分支
    if [ condition ]
    then
    代码
    fi

    多分支
    if [ condition1 ]
    then
    代码1
    elif [ condition ]
    then
    代码
    fi

  2. case 语句
    case $变量名 in
    “值1”)
    如果变量的值等于值1,则执行此处代码
    ;;
    “值2”)
    如果变量的值等于值2,则执行此处代码
    ;;
    “*”)
    如果变量的值均不等于以上值,则执行此处代码
    ;;
    esac
  3. for 循环
    for 变量 in 值1 值2 值3
    do
    程序/代码
    done

    for(( 初始值;循环控制条件;变量变化))
    do
    程序/代码
    done

  4. while 循环
    while [ condition ]
    do
    程序/代码
    done
    注意:while 和 [间有空格,condition 与 [] 间有空格

八、read读取控制台输入

read (选项) (参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了;
参数:
变量:指定读取值得变量名

九、函数

shell编程和其他编程语言一样,有系统函数,也可以自定义函数

  • 常用系统函数
    basename [string] [suffix] #basename命令会删掉所有得前缀包括最后一个 ‘/’ 字符,如果指定了 suffix,basename 会将 string 中得 suffix 去掉(常用于获取文件名)
    dirname 文件绝对路径 #从给定的包含绝对路径的文件名中去除文件名,然后返回剩下的路径(常用于获取路径)
  • 自定义函数
    [ function ] funname[()]
    {
    Action;
    [return int;]
    }
    调用直接写函数名:funname [值]

原文地址:http://www.cnblogs.com/MuYg/p/16930798.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性