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)
相關文章
相關標籤/搜索