首页 > 代码库 > Shell脚本重新学习

Shell脚本重新学习

#!/bin/bash


shell的两种运行方式

改变权限chmod u+x

运行时指定解释器


shell变量

变量类型

访问变量

$、${}

只读变量

readonly

删除变量

unset取消变量,但不能取消只读变量

myUrl="http://lingdandan.blog.51cto.com"
unset myUrl
echo $myUrl

运行结果:

技术分享

myUrl="
readonly myUrl 
unset myUrl
echo $myUrl

运行结果:

技术分享


shell字符串

字符串可以用单引号,也可以用双引号,也可以不用引号

单引号

单引号中的字符都会原样输出

单引号中间不能有单引号(转义字符也不行)

双引号

双引号里面可以有变量

单引号可以有转义字符

字符串拼接

LANGUAGE=English

echo "hello ${LANGUAGE}"

字符串长度计算  

echo ${#VAR}

echo ${VAR} | wc -c

echo $TEST_SHELL_VAR | awk ‘{print length ($0)}‘

提取子字符串

#*字符

##*字符

%字符*

%%字符*

技术分享

VAR代表变量

${VAR:0:10}  表示从左边第一个字符开始之后的10个字符

${VAR:7}    表示从第七个字符开始之后的所有字符

${VAR:0-3:10} 表示从右边数的第三个字符开始之后的10个字符

${VAR:0-14}  表示从右边数的第14个字符开始之后的所有字符

技术分享

查找字符串

   

Shell数组

数组定义

bash只支持一维数组,不支持多维

下标从0开始,可以是整数或者表达式

arr=(值1 值2 值3)      圆括号   空格隔开

也可以单独定义各个分量

数组读取

${arr[下标]}

使用@可获得数组的所有元素  

技术分享

获取数组长度

${#arr[@]}

${#arr[*]}

技术分享


shell传参

脚本内获取参数的格式:$n

$0 $1 $2

技术分享

$*和$@都是引用所有参数,它们的区别在于$*把参数当作一个字符串,$@把参数当作一个一个的字符串

$*  "1 2 3"     只传了一个参数

$@  "1" "2" "3"  传来三个参数

技术分享


shell基本运算

原生的bash不支持简单的算术运算,可通过别的命令如awk和expr来完成

算数运算

+ - * / % = == !=

VAR=`expr 3 \* 5`

关系运算符

-eq -nq -gt -lt -ge -le

关系运算符只支持数,不支持字符串

技术分享

字符串运算

=   !=   -z  -n   str


expr  http://lingdandan.blog.51cto.com/10697032/1791485

    expr match 字符串 表达式    expr 字符串 : 表达式

    expr index 字符串 字符

    expr length 字符串

    expr substr 字符串 偏移量 长度  (偏移量从1开始)

布尔运算

! -o -a

逻辑运算符

&& ||

文件测试运算符

[ -f file ] -d  -b  -c  -p  -r  -w  -x  -s(文件是否大于0)  -e(目录或文件是否存在)


for

for 变量 in 列表

do

done

技术分享



本文出自 “零蛋蛋” 博客,谢绝转载!

Shell脚本重新学习