Chinaunix首页 | 论坛 | 博客
  • 博客访问: 282671
  • 博文数量: 87
  • 博客积分: 1206
  • 博客等级: 少尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-16 00:12
个人简介

do the right things the right ways

文章分类

全部博文(87)

文章存档

2017年(5)

2016年(6)

2015年(1)

2012年(11)

2011年(64)

分类: Python/Ruby

2011-04-21 19:34:54

一、
‘:’有多个功能,是一个bash内建命令,它的返回值为0。
a)符号什么都不做,类似于静态语言中的 ;空语句:
if test -n string; then
    :   //空语句
else
    ...
fi
b)等价于true:例如一个无限循环:
while :   //等同于while true
do
     .....
done
c)在一个二元命令中提供一个占位符:
d)使用参数替换来评估字符串变量:
e)在和重定向符号>联合使用的时候,可以把一个文件截断为0长度,并且不会改变这个文件的属性,如果文件不存在则创建它,例如:
:>hello.txt
可以发现这个语句也可以写成 >hello.txt,但是前面的写法并不产生一个进程,不会占用系统资源,原因是:符号是一个内建命令
f)可以用来注释,这和#注释是有区别的,用:注释不会忽略可能的语法规则(如果注释中存在的话)

二、
shell脚本中定义变量并赋初值,变量名字和等号间不能有空格。
CUR_UID=$UID   //yes
CUR_UID = $UID   //error
三、
()表示命令组。
a)在一个脚本文件中可以作为一个类似C中函数理解,()内部的变量是局部的对外部不可见。如:
#!/bin/bash

str="testing"
(str="This is a sub shell testing.")

echo "str = $str"    #you will see str = testing
b)用来初始化一个数组:  arr=(1,2,3,4,5,6,7,8,9,0)
四、
$$表示一个正在运行的脚本进程ID。
五、
{}符号。
a) 大括号扩展。例如 cat {1.sh,2.sh,3.sh} > total.sh    注意大括号中不要有空格,除非有特殊含义。如果目标文件不存在则创建。也可以是:cp {1.sh,one.sh}
b)和C语言一样,可以作为一个语句块。和上面提到的命令组()不同的是在语句块中的变量会影响到这个脚本其他部分的代码。
#!/bin/bash

str="testing"
{
       str="this is a func testing"
}
echo "str=$str"
六、
>、&>、>&、>>、<
>表示把符号左边的标准输出覆盖写入到符号右边的文件中;
&>表示把左边命令的stdout 和 stderr 写入到右边的文件中;
command >&2  表示把stdout 写入到stderr(stdin:0, stdout:1,stderr:2)
>>表示把左边的输出追加到右边的文件中;
七、
a)赋值
a=1+2
echo $a   #1+2 原因是bash变量不分类型,只是一个字符串,但是依赖上下文可以进行算术操作
let a=1+2
echo $a //a=3
b)可以指定一个变量的类型,使用declare:declare -i int
阅读(676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~