Shell编程
Shell环境
Linux的Shell种类众多,常见的有:人们并不区分前两个所以/bin/sh可以写成/bin/bash
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/ksh)
K Shell(/usr/bin/ksh)
Shell程序步骤:
1.创建一个文件,扩展名为 .sh
2.修改文件的权限为可执行文件
3.执行
Shell结构
1.#! 用来指定执行脚本的Shell(#!/bin/sh)
2.# 注释
3.命令和控制结构
Shell变量
命名规则:
1.只能用英文字母,数字和下划线,首个字符不能以数字
2.中间不能有空格,可以使用下划线
3.不可以用标点符号和关键字
使用规则:
1.习惯用大写字母来命名变量
2.赋值时,“="前后不能有空格
3.命令的执行结果赋值给变量时,使用反单引号 如:TIME=`date`
4.使用变量时,使用$变量名 或${变量名}
只读变量:
使用readonly,此命令可以将变量定义为只读变量,只读变量的值不能改变(eg:readonly my_name=ding)
删除变量:
使用unset,变量删除后不能再次被使用,unset不能删除只读变量
变量类型:
临时变量:或局部变量,在脚本命令中定义,仅在当前shell实例中有效,其他启动的程序不能访问局部变量
永久变量:或环境变量,所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量
Shell字符串
字符串:
是shell编程中最常用最有用的数据类型(除了数字和字符串,其他不好用)
字符串可以用单引号、双引号,也可以不用引号。
单引号:
1.单引号里面的任何字符都会原样输出,单引号字符串中的变量是无效的
2.单引号字串中不能出现单引号(对单引号使用转义字符也不行)
双引号:
1.双引号里可以有变量
2.可以出现转义字符
拼接字符串:
两种方式:1.无缝拼接
2.双引号内直接使用变量
获取字符串长度:
语法1:${#name}
语法2:expr length ${name}
提取子字符串:(下标索引从0开始)
语法:A:${name:startIndex:length}
${name:startIndex}
${name:0-index:length}
${name:0-index}
B:#、##:从左边开始删除
#表示从左边删除到第一个指定的字符;
##表示从左边删除到最后一个指定的字符
eg:name的字符串从左面开始截取,截取的个数用通配符*表示
因为不知道具体几个字符,截取到第二个f.
A、%、%%:从右边开始删除。
%表示从右边删除到第一个指定的字符;
%% 表示从有边删除到最后一个指定的字符。
另注:删除包括了指定的字符本身。