本文共 2039 字,大约阅读时间需要 6 分钟。
阅读目录
例子
ss='abc\n'echo -e $ssabc #换行起作用echo $ssabc
2.1 =左右两侧不要带空格
a = "hello" #错误a="hello"
2.2 左边变量名不可加$
$a='134'[jihite]$a=$a'abc'[jihite]$echo aa[jihite]$echo $a134abc
b=4let "c=$b+1"echo $c
小例
i=9000while [ $i -lt 9010 ]do let "i=$i+1" echo $idone
1 2 3 4 5 6 7 8 9 10 | 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 |
单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外。
举例
bb="hello"echo "$bb"helloecho '$bb'$bb
注意ecoh -e 'bb′结果还是bb′结果还是bb,因为'$bb'就是字面值,不会转义。
5.1 声明、定义
5.2 访问
5.3 遍历
for var in ${array[*]}do echo $vardone
5.4 数组长度
num=${#array[@]}
对比:获取字符串长度:num=${#str}
for ((i=0;i<5;i++)); do{ sleep 3; echo "hello" $i}donewait
对比
for ((i=0;i<5;i++)); do{ sleep 3; echo "hello" $i}&donewait
这个在上面的基础上多加了一个后台执行&符号,此时5个循环任务并发执行,最后需要3s多一点的时间(效果非常明显)。wait的作用是完成后台所有的任务后才往下执行,否则程序本身会等待。
字符串最后有个'\r'是非常恶心的,可以通过tr命令去掉
a="hello\r"echo $a | tr -d '\r'hello\recho $a | tr -d "\r"hello\recho -e $a | tr -d '\r'hello #转移字符起作用echo -e $a | tr -d "\r"hello
1 | bash -x ***.sh |
+开头的是编译的中间过程,不带+的为正常的输出。效果非常明显。
#!/bin/bashproc=$1proc_num=`ps -ef | grep root | grep $proc | wc -l`echo $proc_numif [ $proc_num = 2 ]then exit 0else exit 2fi
注:if [ con ], 条件con和[]之间有空格
e.g. if [ $proc_num -gt 1 ]
以上为数字的比较,字符串的比较用'='、'!='。e.g.
rev=$(cat /etc/ld.so.conf | grep usr/local/lib)if [[ $rev != '/usr/local/lib' ]]then echo "hello"fi
例1:
例如:以下shell脚本每隔10秒钟就打印出“Hell, dansir”
#!/bin/shellwhile truedo echo "Hello, dansir" sleep 10sdone
例2:
ids="123456789"for i in $idsdo echo $idone
执行
$sh del.sh123456789
$(eval echo $v_endcomm)
本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3969130.html,如需转载请自行联系原作者