一、
‘:’有多个功能,是一个bash内建命令,它的返回值为0。
a)符号什么都不做,类似于静态语言中的 ;空语句:
if test -n string; then
: //空语句
else
...
fi
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)
五、
{}符号。
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
阅读(744) | 评论(0) | 转发(0) |