shell

来源:互联网 发布:北京和隆优化怎么样 编辑:程序博客网 时间:2024/05/13 11:35

http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80

有时候变量名可能会和其它文字混淆,比如:

num=2echo "this is the $numnd"

上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:

num=2echo "this is the ${num}nd"

其输出结果为:this is the 2nd


注意花括号的位置:

num=2echo "this is the {$num}nd"

其输出结果为:this is the {2}nd



在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓的扩展是指程序会把通配符(比如*)替换成适当的文件名,把变量替换成变量值。我们可以使用引号来防止这种扩展,先来看一个例子,假设在当前目录下有两个jpg文件:mail.jpg和tux.jpg。

#!/bin/bashecho *.jpg

运行结果为:

mail.jpg tux.jpg

引号(单引号和双引号)可以防止通配符*的扩展:

#!/bin/bashecho "*.jpg"echo '*.jpg'

其运行结果为:



*.jpg*.jpg

其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展:

#!/bin/bashecho $SHELLecho "$SHELL"echo '$SHELL'

运行结果为:

/bin/bash/bin/bash$SHELL

此外还有一种防止这种扩展的方法,即使用转义字符——反斜杆:\:

echo \*.jpgecho \$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