shell编程总结
来源:互联网 发布:mac系统偏好隐藏 编辑:程序博客网 时间:2024/06/05 17:16
shell变量
使用变量,加$
your_name_1="syq" #定义echo $your_name_1 #使用变量echo ${your_name_1} #加花括号使用变量#加不加花括号都可以,只是让编辑器有识别的边界
只读,readonly
readonly myurl
删除,unset
unset myurl
类型
局部变量,仅在脚本或命令中定义
环境变量,所有shell启动的程序,都能访问环境变量
shell变量,shell程序设置的变量
shell字符串
单引号和双引号的对比
myname="syq"echo "this is my name $myname"#输出this is my name syqecho 'this is my name $myname' #输出this is my name $myname
单引号:
1.单引号中变量无效。2.单引号不能出现双引号
双引号:
1.双引号中变量有效。2.双引号中可以出现转义字符
字符串操作
获取长度
str="abcd"echo ${$str} #输出4
截取字符串
str="abcd"echo ${str,1,2} #输出bc
查找字符串
str ="woaizhongguo"echo `expr index "str" ai` #输出3
shell数组
赋值
array_name=(1 2 3 4 5)#或者单独赋值array_name[0]=1array_name[0]=2array_name[0]=3
读取
valen=${array_name[1]}#读取所有元素echo ${array_name[@]}
操作
#读取数组长度length=${#array_name[@]}length=${#array_name[*]}#读取某个元素长度lengthn=${#array_name[1]}
shell传递参数
$n
向脚本传递参数,$n。n为数字
#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";
#结果:
$ ./test.sh 1 2 3Shell 传递参数实例!执行的文件名:./test.sh第一个参数为:1第二个参数为:2第三个参数为:3
特殊字符
参数处理
说明
$#
传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$
脚本运行的当前进程ID号
$!
后台运行的最后一个进程的ID号
$@
与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-
显示Shell使用的当前选项,与set命令功能相同。
$?
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$*与$@区别
相同:引用所有参数
不同:如果引用1,2,3,前者相当于引用了 "123"这一个,而后者是"1""2" "3"
#!/bin/bashecho "-- \$* 演示 ---"for i in "$*"; do echo $idoneecho"-- \$@ 演示 ---"for i in "$@"; do echo $idone
#输出结果:
$./test.sh 1 2 3-- $* 演示 ---1 2 3-- $@ 演示 ---123
基本运算符
算术
注:a为10,b为20
运算符
说明
举例
+
加法
`expr $a + $b` 结果为 30。
-
减法
`expr $a - $b` 结果为 -10。
*
乘法
`expr $a \* $b` 结果为 200。
/
除法
`expr $b / $a` 结果为 2。
%
取余
`expr $b % $a` 结果为 0。
=
赋值
a=$b 将把变量 b 的值赋给 a。
==
相等。用于比较两个数字,相同则返回 true。
[ $a == $b ] 返回 false。
!=
不相等。用于比较两个数字,不相同则返回 true。
[ $a != $b ] 返回 true。
关系
只支持数字
注:a为10,b为20
运算符
说明
举例
-eq
检测两个数是否相等,相等返回 true。
[ $a -eq $b ] 返回 false。
-ne
检测两个数是否相等,不相等返回 true。
[ $a -ne $b ] 返回 true。
-gt
检测左边的数是否大于右边的,如果是,则返回 true。
[ $a -gt $b ] 返回 false。
-lt
检测左边的数是否小于右边的,如果是,则返回 true。
[ $a -lt $b ] 返回 true。
-ge
检测左边的数是否大于等于右边的,如果是,则返回 true。
[ $a -ge $b ] 返回 false。
-le
检测左边的数是否小于等于右边的,如果是,则返回 true。
[ $a -le $b ] 返回 true。
布尔
注:a为10,b为20
运算符
说明
举例
!
非运算,表达式为 true 则返回 false,否则返回 true。
[ ! false ] 返回 true。
-o
或运算,有一个表达式为 true 则返回 true。
[ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a
与运算,两个表达式都为 true 才返回 true。
[ $a -lt 20 -a $b -gt 100 ] 返回 false。
逻辑
注:a为10,b为20
运算符
说明
举例
&&
逻辑的 AND
[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||
逻辑的 OR
[[ $a -lt 100 || $b -gt 100 ]] 返回 true
字符串运算符
下表列出了常用的字符串运算符,假定变量a 为 "abc",变量 b 为 "efg":
运算符
说明
举例
=
检测两个字符串是否相等,相等返回 true。
[ $a = $b ] 返回 false。
!=
检测两个字符串是否相等,不相等返回 true。
[ $a != $b ] 返回 true。
-z
检测字符串长度是否为0,为0返回 true。
[ -z $a ] 返回 false。
-n
检测字符串长度是否为0,不为0返回 true。
[ -n $a ] 返回 true。
str
检测字符串是否为空,不为空返回 true。
[ $a ] 返回 true。
文件测试运算符
file="/var/test.sh"
操作符
说明
举例
-b file
检测文件是否是块设备文件,如果是,则返回 true。
[ -b $file ] 返回 false。
-c file
检测文件是否是字符设备文件,如果是,则返回 true。
[ -c $file ] 返回 false。
-d file
检测文件是否是目录,如果是,则返回 true。
[ -d $file ] 返回 false。
-f file
检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。
[ -f $file ] 返回 true。
-g file
检测文件是否设置了 SGID 位,如果是,则返回 true。
[ -g $file ] 返回 false。
-k file
检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。
[ -k $file ] 返回 false。
-p file
检测文件是否是有名管道,如果是,则返回 true。
[ -p $file ] 返回 false。
-u file
检测文件是否设置了 SUID 位,如果是,则返回 true。
[ -u $file ] 返回 false。
-r file
检测文件是否可读,如果是,则返回 true。
[ -r $file ] 返回 true。
-w file
检测文件是否可写,如果是,则返回 true。
[ -w $file ] 返回 true。
-x file
检测文件是否可执行,如果是,则返回 true。
[ -x $file ] 返回 true。
-s file
检测文件是否为空(文件大小是否大于0),不为空返回 true。
[ -s $file ] 返回 true。
-e file
检测文件(包括目录)是否存在,如果是,则返回 true。
[ -e $file ] 返回 true。
shell流程控制
if判断
if conditionthen command1 command2 ... commandN fi
if conditionthen command1 command2 ... commandNelse commandfi
if condition1then command1elif condition2 then command2else commandNfi
for
forvar in item1 item2 ... itemNdo command1 command2 ... commandNdone
while
whileconditiondo commanddone
case
echo'输入 1 到 4 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;;esac
shell函数
简单
#!/bin/bashdemoFun(){ echo "这是我的第一个 shell函数!"}echo "-----函数开始执行-----"demoFunecho "-----函数执行完毕-----"#输出结果:-----函数开始执行-----这是我的第一个 shell 函数!-----函数执行完毕-----
带返回值
#!/bin/bashfunWithReturn(){ echo"这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和$anotherNum !" return$(($aNum+$anotherNum))}funWithReturnecho "输入的两个数字之和为 $? !"#输出:这个函数会对输入的两个数字进行相加运算...输入第一个数字: 1输入第二个数字: 2两个数字分别为 1 和 2 !输入的两个数字之和为 3 !
函数参数
#!/bin/bashfunWithParam(){ echo "第一个参数为 $1!" echo "第二个参数为 $2!" echo "第十个参数为 $10 !" echo "第十个参数为 ${10}!" echo "第十一个参数为 ${11}!" echo "参数总数有 $# 个!" echo "作为一个字符串输出所有参数 $*!"}funWithParam 1 2 3 4 5 6 7 8 9 34 73#输出结果:第一个参数为1 !第二个参数为 2 !第十个参数为 10 !第十个参数为 34 !第十一个参数为 73 !参数总数有 11 个!作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
- [shell]shell编程基础知识总结
- Shell编程总结
- linux shell编程总结
- UNIX Shell编程总结
- shell编程基础-总结
- Shell编程技巧总结
- Shell编程学习总结
- Shell 编程 总结
- 01.Shell编程总结
- shell编程比较总结
- shell脚本编程总结
- shell编程总结
- Shell 编程学习总结
- shell编程总结
- shell编程总结
- shell编程自我总结
- shell编程入门总结
- Shell编程之Shell变量学习总结
- Git的分支管理
- Android SharedPreferences的工具类
- js刷新
- CentOS 6.5下安装Tomcat
- 循环向URL中添加参数
- shell编程总结
- csdn
- tomcat中配置支持中文的url
- mysql中datetime比较大小问题
- TCP单线程上传文件
- 安卓scale动画fromDegrees toDegrees解释
- HDU~1556 Color the ball(线段树区间更新||树状数组)
- WebService入门详解
- dwg文件转shp,将注记内容写入shp文件的属性中