您的位置:首页 > 运维架构 > Shell

shell学习之-特殊字符

2007-10-29 11:24 465 查看
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中.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: