http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80
有时候变量名可能会和其它文字混淆,比如:
num=2 echo "this is the $numnd"
上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:
num=2 echo "this is the ${num}nd"
其输出结果为:this is the 2nd
注意花括号的位置:
num=2 echo "this is the {$num}nd"
其输出结果为:this is the {2}nd
在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓的扩展是指程序会把通配符(比如*)替换成适当的文件名,把变量替换成变量值。我们可以使用引号来防止这种扩展,先来看一个例子,假设在当前目录下有两个jpg文件:mail.jpg和tux.jpg。
#!/bin/bash echo *.jpg
运行结果为:
mail.jpg tux.jpg
引号(单引号和双引号)可以防止通配符*的扩展:
#!/bin/bash echo "*.jpg" echo '*.jpg'
其运行结果为:
*.jpg *.jpg
其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展:
#!/bin/bash echo $SHELL echo "$SHELL" echo '$SHELL'
运行结果为:
/bin/bash /bin/bash $SHELL
此外还有一种防止这种扩展的方法,即使用转义字符——反斜杆:\:
echo \*.jpg echo \$SHELL
输出结果为:
*.jpg $SHELL
http://hi.baidu.com/sunboy_2050/item/888e44e11b36b3bd2e140bcc
关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...
1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`
4、for i in ${arr[@]}
5、for i in $* ; do
6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
7、for i in f1 f2 f3 ;do
8、for i in *.txt
9、for i in $(ls *.txt)
for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组
============ -_- ==============for num in $(seq 1 100)
10、LIST="rootfs usr data data2"
for d in $LIST; do
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
11、for i in {1..10}
12、for i in stringchar {1..10}
13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'
注意:AWK中的for循环写法和C语言一样的
for((i=100001;i<=1000000;i++)); do echo $i; done >> tt