shell编程实用小技巧
2016-10-16 22:42
169 查看
shell编程实用小技巧
1、i++实现
a=1 a=$(($a+1)) a=$[$a+1] a=`expr $a + 1` let a++ let a+=1
2、函数返回字符串
foo(){echo JAY;} result="$(foo)"
3、字符串连接
str="abc" str="$str defg" #实现了追加赋值 echo $str
4、截取字符串
string="abcdefgh" cut_string=`echo $string|cut -c 1-4`
获取前4个字符。
5、子shell中不更新全局变量值
#!/bin/bash a="hehe" change() { a="haha" } give() { a=$1 } alter() { $1="heihei" #//报错./exp.sh: line 9: a: command not found #//不能给实参赋值 } change echo $a alter a echo $a echo "give"|give #子shell中执行不会更新到全局变量中 echo "after give pipe "$a give "not in pipe" echo $a
输出如下:
可见,管道符号后面的函数执行不会影响到全局变量a的值。
6、分支控制
1)、整数比较
-eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b" ] -lt 小于,如:if [ "$a" -lt "$b" ] -le 小于等于,如:if [ "$a" -le "$b" ] < 小于(需要双括号),如:(("$a" < "$b")) <= 小于等于(需要双括号),如:(("$a" <= "$b")) > 大于(需要双括号),如:(("$a" > "$b")) >= 大于等于(需要双括号),如:(("$a" >= "$b"))
2)、字符串比较
= 等于 if [ "$a" = "$b" ] == 与=等价 != 不等于 if [ "$a" = "$b" ] < 小于,在ASCII字母中的顺序: if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ] #需要对<进行转义 > 大于 -z 字符串为null,即长度为0 -n 字符串不为null,即长度不为0
3)、其他
-e 文件存在 -a 文件存在(已被弃用) -f 被测文件是一个regular文件(正常文件,非目录或设备) -s 文件长度不为0 -d 被测对象是目录 -b 被测对象是块设备 -c 被测对象是字符设备 -p 被测对象是管道 -h 被测文件是符号连接 -L 被测文件是符号连接 -S(大写) 被测文件是一个socket -t 关联到一个终端设备的文件描述符。用来检测脚本的stdin[-t0]或[-t1]是一个终端 -r 文件具有读权限,针对运行脚本的用户 -w 文件具有写权限,针对运行脚本的用户 -x 文件具有执行权限,针对运行脚本的用户 -u set-user-id(suid)标志到文件,即普通用户可以使用的root权限文件, 通过chmod +s file实现 -k 设置粘贴位 -O 运行脚本的用户是文件的所有者 -G 文件的group-id和运行脚本的用户相同 -N 从文件最后被阅读到现在,是否被修改 f1 -nt f2 文件f1是否比f2新 f1 -ot f2 文件f1是否比f2旧 f1 -ef f2 文件f1和f2是否硬连接到同一个文件
4)、if
注意if与 [ 间空格。[ ]里面空格if [ cmd ];then elif [ cmd ];then else fi
5)、for … in do … done
for i in `ls -l` do echo $i done
6)、while [ cond ] do … done
while [ "$i" -lt 3 ] do echo $i let i++ done
7)、case
case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac
相关文章推荐
- 介绍VC6.0的18个实用小技巧
- 电脑实用小技巧
- 提高网站可用性的十个实用小技巧
- 【Unity实用小技巧】Unity使用总结(一)
- 介绍VC6.0的实用小技巧
- VC的若干实用小技巧(一)
- VS的一些实用快捷键及小技巧(不断更新)
- javascript的基础小技巧蛮实用的
- Eclipse RCP实用小技巧
- eclipse一些实用小技巧
- VC6.0的18个实用小技巧(网上转载)
- vs下三个比较实用方便的小技巧
- bat实用小技巧
- 13个mysql数据库的实用SQL小技巧
- 10个chrome console实用小技巧
- 13个mysql数据库的实用SQL小技巧
- RxJava实用小技巧 --- 随手记
- 苹果iPad air技巧教程:50个实用小技巧
- 实用的keil5代码整理小技巧
- iOS学习笔记之开发实用小技巧(持续更新)