在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ () 與 {} 差在哪?
別人echo、你也echo,是問echo知多少?
何為 shell?
你要 if 還是 case 呢?
""(雙引號) 與''(單引號) 差在哪?
exec 跟 source 差在哪?
$(())與$()還有${}差在哪?
() 與 {} 差在哪?
shell and Carriage 關(guān)系
for what? while 與 until 差在哪?
大于小于號差別?
[^ ] 跟[! ]差在哪? (RE: Regular Expression)
[^ ] 跟[! ]差在哪? (wildcard)
特殊符號差異
&& 與 || 差在哪?
var=value 在 export 前后的差在哪?

() 與 {} 差在哪?

嗯,這次輕松一下,不講太多... ^_^

先說一下,為何要用 () 或者 {} 好了。

許多時候,我們在 shell 操作上,需要在 一定的條件下執(zhí)行多個命令,也就是說, 要么不執(zhí)行,要么就全執(zhí)行,而不是每次 依序的判斷是否要執(zhí)行下一個命令。

或者,要從一些命令執(zhí)行的先后次序中得到結(jié)果, 如算術(shù)運算的 2*(3+4) 那樣...

這時候,我們就可以引入 "命令群組"(command group) 的概念:將許多命令集中處理。

在 shell command line中,一般人或許不太計較(){}這兩對符號的差異,雖然兩者都可以將多個命令當作群組處理, 但若從技術(shù)細節(jié)上,卻是很不一樣的:

  • ()command group置于sub-shell(子shell) 中去執(zhí)行,也稱 nested sub-shell。
  • {} 則是在同一個shell內(nèi)完成,也稱non-named command group。

若你對上一章的 fork 與 source 的概念還記得的話, 那就不難理解兩者的差異了。

要是在 command group中扯上變量及其他環(huán)境的修改, 我們可以根據(jù)不同的需求來使用(){}。 通常而言, 若所作的修改是臨時的,且不想影響原有或以后的設(shè)定, 那我們就使用nested sub-shell, 即(); 反之,則用non-named command group, 即{}。

是的,光從command line來看,(){}差別就講完了,夠輕松吧~~~, ^_^

然而,這兩個meta用在其他command meta或領(lǐng)域中 (如 Regular Expression), 還是有很多差別的。 只是,我不打算再去說明了,留給讀者慢慢發(fā)掘好了...

我這里只想補充一個概念,就是function。 所謂function,就是用一個名字去命名一個command group, 然后再調(diào)用這個名字去執(zhí)行command group。

non-named command group來推斷, 大概你也可以推測到我要說的是{}了吧?(yes! 你真聰明 ^_^)

在 bash 中,function 的定義方式有兩種:

  • 方式一:
function function_name {
    command1
    command2
    command3
    .....
}
  • 方式二:
function_name () {
    command1
    command2
    command3
    ......
}

用哪一種方式無所謂, 只是碰到所定義的名稱與現(xiàn)有的命令或者別名沖突的話, 方式二或許會失敗。 但方式二起碼可以少打個function這一串英文字符, 對懶人來說 (如我),有何樂而不為呢?...^_^

function 在一定程度上來說,也可以稱為 "函數(shù)", 但請不要與傳統(tǒng)編程所使用的 "函數(shù)"(library) 搞混了, 畢竟兩者差異很大。 唯一相同的是,我們都可以隨時用 "已定義的名稱" 來調(diào)用它們...

若我們在 shell 操作中,需要不斷地重復(fù)某些命令, 我們首先想到的,或許是將命令寫成 shell 腳本 (shell script)。 不過,我們也可以寫成 function, 然后在 command line 中打上 function_name 就可當一般的 shell script 使用了。

若只是你在 shell 中定義的function, 除了用unset function_name 取消外, 一旦你退出 shell, function 也跟著消失。 然而,在 script 中使用 function 卻有許多好處, 除了提高整體 script 的執(zhí)行性能外 (因為已經(jīng)載入), 還可以節(jié)省許多重復(fù)的代碼......

簡單而言,若你會將多個命令寫成 script 以供調(diào)用的話, 那你可以將 function 看成 script 中 script。... ^_^

而且通過上一章節(jié)介紹的source命令, 我們可以自行定義許許多多好用的 function, 在集中寫在特定文件中, 然后,在其他的 script 中用source將它們載入,并反復(fù)執(zhí)行。

若你是RedHat Linux的使用者, 或許,已經(jīng)猜出 /etc/rc.d/init.d/functions這個文件時啥作用了~~~ ^_^

okay,說要輕松點的嘛,那這次就暫時寫到這吧。 祝大家學習愉快,^_^