Shell的特殊字符

#  有意义的“#”符合
  echo ${PATH#*:} # 参数替换,不是一个注释
  echo $(( 2#101011 )) # 进制转换,能够是任意进制,不是一个注释shell

“.”   .字符匹配,这是做为正则表达是的一部分,用来匹配任何的单个字符.
  【例】bash$ cp /home/bozo/current_work/junk/* .数组

,   逗号连接了一系列的算术操做,虽然里边全部的内容都被运行了,但只有最后一项被返回.
  【例】let "t2 = ((a = 9, 15 / 3))" # 设制变量 "a = 9" 和 "t2 = 15 / 3"bash

\   转义字符,如\X 等价于"X"或'X'.
/   文件名路径分隔符.或用来作除法操做.函数

:   空命令,等价于"NOP"(no op,一个什么也不干的命令).也能够被认为与shell 的内建命令(true)做用相同.
    ":"命令是一个 bash 的内建命令,它的返回值为0,就是shell 返回的true.spa

[root@localhost TeShuzifu]# cat Sixunhuan.sh 
#!/bin/bash
#描述:
# 用":"写死循环
#做者:孤舟点点
#版本:1.0
#建立时间:2017-11-12 13:09:30
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while :
do
date "+%Y%m%d-%H%M%S"
sleep 1
done
[root@localhost TeShuzifu]#
[root@localhost TeShuzifu]# cat Ifzhanweifu.sh 
#!/bin/bash
#描述:
# 用if语句使用占位符":"。
#做者:孤舟点点
#版本:1.0
#建立时间:2017-11-12 13:24:00
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

if [ : ] ; #表明true
 then :  #什么都不作,引出分支。
 date
 sleep 1
fi
[root@localhost TeShuzifu]# 

  也可能用来做为注释行,虽然咱们不推荐这么作.使用#来注释的话,将关闭剩余行的错误检查,因此能够在注释行中写任何东西.然而,使用:的话将不会这样.如:code

  1 : This is a comment thar generates an error,(if [ $x -eq 3] ).blog

  ":"还用来在/etc/passwd 和$PATH 变量中用来作分隔符.进程

[root@localhost TeShuzifu]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost TeShuzifu]# 

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

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


()   命令组.如:

1 (a=hello;echo $a)
注意:在()中的命令列表,将做为一个子shell 来运行.
在()中的变量,因为是在子shell 中,因此对于脚本剩下的部分是不可用的.
如:
1 a=123
2 ( a=321; )
3
4 echo "a = $a" # a = 123
5 # 在圆括号中a 变量,更像是一个局部变量.

用在数组初始化,如:
1 Array=(element1,element2,element3)
{xxx,yyy,zzz...}

 

大括号扩展,如:
1 cat {file1,file2,file3} > combined_file
2 # 把file1,file2,file3 链接在一块儿,而且重定向到combined_file 中.
3
4 cp file22.{txt,backup}
5 # 拷贝"file22.txt" 到"file22.backup"中


一个命令可能会对大括号中的以逗号分割的文件列表起做用[1]. file globbing 将对
大括号中的文件名做扩展.
注意: 在大括号中,不容许有空白,除非这个空白是有意义的.
echo {file1,file2}\ :{\ A," B",' C'}
file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

{}   代码块.又被称为内部组.事实上,这个结构建立了一个匿名的函数.可是与函数不一样的是,在其中声明的变量,对于脚本其余部分的代码来讲仍是可见的.如:

 

bash $
{
local a;
a= 123;
}
bash中的local 申请的变量只可以用在函数中.
1 a=123
2 { a=321; }
3 echo "a = $a" # a = 321 (说明在代码块中对变量a 所做的修改,影响了外边的变量a)
相关文章
相关标签/搜索