现在的位置: 首页 > 综合 > 正文

shell学习之-特殊字符

2013年04月29日 ⁄ 综合 ⁄ 共 1640字 ⁄ 字号 评论关闭
                             shell中的特殊字符

;
分隔符号,用来表示一行执行多条命令
    echo hello; echo there
    if [ -f "$file" ]; then
        cd "$file"
    fi

;;
case 的选项终止符
ex:
    case "$var" in
    1) echo "1=$var" ;;
    2) echo "2=$var" ;;
    esac

.
1)相当于source命令
2)文件名第一个字符,变文件可见为隐藏
3)做目录时,表示当前目录
ex:
    cd .
4)在正则表达式中,匹配单个字符

"
部分引用."STRING"阻止了一部分特殊字符

'
全引用. 'STRING' 阻止了全部特殊字符

,
在算数运算中和C语言的逗号作用相似
ex:
    let "t2=((a=4, 5/3))"     #t2=5/3

/
1)转义字符,相当于''或""
2)用来表示一行还没有结束

/
1)路径分隔符或除法运算符
2)在sed中用来表示一个单词的结束

`
后置引用。由于命令替换

:
1)与True命令相同,表示什么都不干
ex1:
    if [***]
    then :                      #什么都不作,为了引出下面的分支
    else
        echo "test :"
    fi

ex2:
    while :                      #相当于while true
    do
        echo "test :"
    done
2)作为/etc/passwd和$PATH字符间的分隔符

!
取反操作符

^
1)sed,grep中表示行首
    sed -e '/^$/ d' filename  #删除空白行

2)在正则表达式中表示取反
    grep '^[^ad]' filename      #输出行首不是字母a或者d开头的行

*
1)文件名或正则表达式中(但这两者却是不同的)的万能匹配符
2)数学乘法

**
乘法密运算

?
1)在正则表达式中表示单个字符的匹配

$
1)变量替换
ex:
    var=8
    echo $var   #8
2)正则表达式中的行结束符
    sed -e '/^$/d' filename #删除文件中的空被行

${}
参数替换,见9.3节.

$()
用来进行命令的运行,相当于``

$*,$@
所有的位置参数,被作为一个单词.
注意:"$*"和"$@"必须被""引用.

$#
表示参数的个数,注意参数的个数不包含命令本身在内
 test.sh a b c
 echo "$#"          #输出的结果是3

$?
退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态.

$$
进程ID变量.这个$$变量保存运行脚本进程ID

()
1)命令组     ex: (echo "1"; echo "2" )
2)数组初始化  ex:  array=(1,2,3,4)
说明:它的命令会在子shell中运行,所以其内部的变量对于外面是不可见的

{}
1)代码块
cp file22.{txt,backup}
# 拷贝"file22.txt" 到"file22.backup"中

5)变量内部替换
ex:
    a=1122
    b=${a/11/gg}    #b=gg22

[]
1)用于test的表达式中   if [ -x "$file" ]; then  **** fi;
2)数组元素     array[1]=1; echo ${array[1]}
3)正则表达式时的匹配字符的一个范围:

(())
一般是用于数学计算

[[]]
可以进行算数运算并返回一个逻辑的值

与函数的{}不同的是,该括号里声明的变量对于外部代码来说还是可见的。
2)代码块的操作
ex:
{
    echo "rpm check"
    rpm -qpi *.rpm
} > "$test"
3){} /;
find 的命令的后来的部分。注意";"是find 命令的结束。

4)大括号扩展,如:
cat {file1,file2,file3} > combined_file
# 把file1,file2,file3连接在一起,并且重定向到combined_file中.

抱歉!评论已关闭.