首页 > 代码库 > 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脚本重新学习