Linux系統大括號的作用

2020-12-12 南華中天企業

上期小編介紹了Linux系統中括號( )和[ ]括號的作用,這期接著來介紹Linux系統中括號{ }的作用

1、Linux系統括號{ }的常規用法

1)括號{ }拓展

對括號{ }中的文件名做擴展。在括號{ }中,不允許有空白,除非這個空白被引用或轉義。第一種:對括號{ }中的以逗號分隔的文件列表進行拓展。如 touch {a,b}.txt 結果為a.txt b.txt。第二種:對括號{ }中以. 分割的順序文件列表起拓展作用,如:touch {a.d}.txt 結果為a.txt b.txt c.txt d.txt

2)代碼塊,又被稱為內部組

這個結構事實上創建了一個匿名函數,與括號( )中的命令不同,括號{ }內的命令不會新開一個子shell運行,即腳本餘下部分仍可使用括號內變量。括號內的命令間用分號隔開,最後一個也必須有分號。{ }的第一個命令和左括號之間必須要有一個空格。

2、Linux系統中括號{ }的幾種特殊的替換結構

1)${var:-string}和${var:=string}:若變量var為空,則用在命令行中用string來替換${var:-string},否則變量var不為空時,則用變量var的值來替換${var:-string}

對於${var:=string}的替換規則和${var:-string}是一樣的,所不同之處是${var:=string}若var為空時,用string替換${var:=string}的同時,把string賦給變量var: ${var:=string}很常用的一種用法是,判斷某個變量是否賦值,沒有的話則給它賦上一個默認值。

2) ${var:+string}的替換規則和上面的相反,即只有當var不是空的時候才替換成string,若var為空時則不替換或者說是替換成變量 var的值,即空值。

3)${var:?string}替換規則為:若變量var不為空,則用變量var的值來替換${var:?string};若變量var為空,則把string輸出到標準錯誤中,並從腳本中退出。我們可利用此特性來檢查是否設置了變量的值。

3、Linux系統中括號{ }的四種模式匹配替換結構

模式匹配記憶方法:

# 是去掉左邊(在鍵盤上#在$之左邊)

% 是去掉右邊(在鍵盤上%在$之右邊)

#和%中的單一符號是最小匹配,兩個相同符號是最大匹配。

第一種模式:${variable%pattern} ,這種模式時,shell在variable中查找,看它是否一給的模式pattern結尾,如果是,就從命令行把variable中的內容去掉右邊最短的匹配模式。

第二種模式: ${variable%%pattern},這種模式時,shell在variable中查找,看它是否一給的模式pattern結尾,如果是,就從命令行把variable中的內容去掉右邊最長的匹配模式。

第三種模式:${variable#pattern} 這種模式時,shell在variable中查找,看它是否一給的模式pattern開始,如果是,就從命令行把variable中的內容去掉左邊最短的匹配模式。

第四種模式: ${variable##pattern} 這種模式時,shell在variable中查找,看它是否一給的模式pattern結尾,如果是,就從命令行把variable中的內容去掉右邊最長的匹配模式。

這四種模式中都不會改變variable的值,其中,只有在pattern中使用了*匹配符號時,%和%%,#和##才有區別。結構中的pattern支持通配符,*表示零個或多個任意字符,?表示僅與一個任意字符匹配,[……]表示匹配中括號裡面的字符,[!……]表示不匹配中括號裡面的字符。

4、Linux系統中括號{ }的字符串提取和替換

第一種模式:${var:num},這種模式時,shell在var中提取第num個字符到末尾的所有字符。若num為正數,從左邊0處開始;若num為負數,從右邊開始提取字串,但必須使用在冒號後面加空格或一個數字或整個num加上括號,如${var: -2}、${var:1-3}或${var:(-2)}。

第二種模式:${var:num1:num2},num1是位置,num2是長度。表示從$var字符串的第$num1個位置開始提取長度為$num2的子串。不能為負數。

第三種模式:${var/pattern/pattern}表示將var字符串的第一個匹配的pattern替換為另一個pattern。

第四種模式:${var//pattern/pattern}表示將var字符串中的所有能匹配的pattern替換為另一個pattern。

以上就是Linux系統中括號{ }的作用,相信可以幫助用戶更清晰的使用Linux系統中的括號{ }。

相關焦點

  • Linux系統()與「」括號的作用
    Linux系統在使用過程中,會很多時候使用到括號的情況,今天小編就來介紹下,Linux系統中括號( )和[ ]括號的作用。一、括號( )的作用1、單小括號 ( )1)命令組括號中的命令將會新開一個子shell順序執行,所以括號中的變量不能夠被腳本餘下的部分使用。括號中多個命令之間用分號隔開,最後一個命令可以沒有分號,各命令和括號之間不必有空格。
  • Linux替代Windows系統軟體大比拼
    linux系統近兩年在桌面應用上的發展有目共睹,並且很多人開始活躍起來了,想轉到linux下。前些日子,我寫了「為什麼我們不選擇 linux?」 的blog。引起了眾多網友的響應,足可見linux在業內的影響。然而我寫那幾條大家不選擇linux的理由並不是空空而談,是因自身使用linux的體會有感而發的。
  • Deepin Linux系統中的安全軟體
    360安全衛士深度應用商店中,360安全衛士正式上線,具體在在linux系統的作用有多大,還不知道,平常使用linux系統,沒有安裝過安全軟體或者殺毒軟體,相對windows作業系統,linux的病毒問題相對來說少多了
  • Windows 終於開始兼容 Linux 系統-windows下的Linux子系統
    而微軟發布的操作內置Linux子系統,也是從Windows10開始。Windows內置linux子系統很長時間,也好幾個版本了,一直沒有實際測試過,今天閒來沒事,測試一下windows下的Linux子系統(WSL)。
  • 最小的Linux系統製作過程詳解
    linux系統的內核原代碼和編譯工具,利用busybox內建的強大功能,在一張軟盤上做的一個很小的linux系統.他具備一個linux系統的基本特徵,支持linux系統最常用的一百多個命令,支持多種文件系統,支持網絡等等,你可以把他當做一張linux起動盤和修復盤來用,你也可以把他當做一個靜態路由的路由器軟體,當然,你也可以把他當做一個linux玩具,向你的朋友炫耀 linux可以做的多麼小.我把他叫做
  • Linux 系統內核的調試
    kgdb補丁的主要作用是在Linux內核中添加了一個調試Stub。調試Stub是Linux內核中的一小段代碼,提供了運行gdb的開發機和所調試內核之間的一個媒介。gdb和調試stub之間通過gdb串行協議進行通訊。gdb串行協議是一種基於消息的ASCII碼協議,包含了各種調試命令。當設置斷點時,kgdb負責在設置斷點的指令前增加一條trap指令,當執行到斷點時控制權就轉移到調試stub中去。
  • 【Linux】Linux系統中的權限詳解
    所以對於了解linux系統中的各種權限及要給用戶,服務等分配合理的權限十分重要。一.文件基本權限   首先看下linux下的文件權限,可以使用ll命令或者是帶-l(長列表選項)的ls命令。   三.ACL(Access Control List )權限    linux系統中一個文件只有一個所屬組,一個所有者,acl權限是解決用戶對文件權限不足,也就是用戶身份不夠的情況下。
  • Linux 系統的chmod命令
    大家好,元旦假期過完各位小夥伴是不是神清氣爽啊,今天說一下raksmart的Linux系統的chmod命令。(2)chmod -R mode dest_file:-R選項可以讓權限改變遞歸地作用到文件和子目錄。
  • Linux系統從入門到放棄?
    續上一個學期學完了的Linux基礎知識學習過程,這一學期的centos伺服器技術學完後,讓我對於Linux系統的學習又加深了許多。我知道了Linux只是個 內核。現在的Linux作業系統,都是用這麼一個內核,加上其它的應用程式構成的。
  • 學習Linux系統需要明白的一些事情
    直到有一次找工作的時候,看見一個公司招運維人員,抱著試試的態度去跟面試官了解了解,比較幸運的是人家願意試用3個月,然後就正式邁出人生職業的第一步,在實習當中才接觸到linux,然後跟著師父一步一步的深入了解linux,我也以我6年的運維經歷及學習linux的經驗跟大夥分享下我的一些看法,當然,在IT行業,分享是一種精神,也是一種美德。
  • 七步開始你的 Linux 系統管理員生涯
    Linux 現在是個大熱門。每個人都在尋求 Linux 才能。招聘人員對有 Linux 經驗的人求賢若渴,還有無數的職位虛位以待。
  • IT運維工程師們為什麼選擇使用Linux系統
    linux自誕生之日起,便受到了全世界優秀黑客程式設計師們的百般寵愛與關注。曾經,linux似乎離我們非常遙遠;而現在,越來越多的人聽說了linux,會去討論linux發行版,會去關注linux內核。而程式設計師們更是熱衷於使用linux,在linux開發。
  • 在linux下使用noatime提升文件系統性能的方法
    在linux下使用noatime提升文件系統性能的方法 linux系統功能強大,但是目前大多數用戶都是用的是windows系統,對於linux系統來說很多功能用戶還很陌生,本文介紹了在linux下如何使用noatime提升文件系統性能的方法。
  • linux-3.18內核系統調用
    多數位置上的sys_ni_syscal都代表了那些已經被內核中淘汰或者沒有實際用處的系統調用。如果一個系統調用被淘汰,它所對應的服務例程就要被指定為sys_ni_syscall。我們並不能將它們的位置分配給其他的系統調用,因為一些老的代碼可能還會使用到它們。否則,如果某個用戶應用試圖調用這些已經被淘汰的系統調用,所得到的結果,比如打開了一個文件,就會與預期完全不同,這將令人感到非常奇怪。
  • 為何以及如何學Linux系統?
    在當今的社會中,linux用處實在是太過廣泛了。現在用在伺服器和嵌入式上的Linux發行版本數不勝數,桌面上linux只佔1%的比例,但這不代表linux比windows和mac 做得差,實際上桌面系統上這三個各有千秋,現在ubuntu、centos等發行版本就用著很方便。在學習Linux之前,我們應該問自己幾個問題: 我們幹嘛要學習Linux?
  • 深入理解Linux內存子系統
    linux 內存是後臺開發人員,需要深入了解的計算機資源。合理的使用內存,有助於提升機器的性能和穩定性。本文主要介紹 linux 內存組織結構和頁面布局,內存碎片產生原因和優化算法,linux 內核幾種內存管理的方法,內存使用場景以及內存使用的那些坑。
  • 小括號、中括號、大括號,英文怎麼說?
    一定要讀一下括號裡的內容。寫下來:所有新生需要到會議室,括號,202室,括號完。(2) Brackets 中括號;方括號We type suggestions between brackets to distinguish them from the regular text.
  • Linux系統入門命令學習經驗
    我大學的專業是電氣工程及其自動化,平時的課程也涉及不到linux,所以旁邊也沒有掌握linux的同學能夠一塊交流,通過自己這段時間的學習,我覺得有些學習總結可以簡單的介紹給大家,供大家在開始業餘學習linux的時候能夠作為一點參考。
  • 深度好文:Linux文件系統剖析
    系統調用接口的作用就像是交換器,它將系統調用從用戶空間發送到內核空間中的適當端點。VFS 是底層文件系統的主要接口。這個組件導出一組接口,然後將它們抽象到各個文件系統,各個文件系統的行為可能差異很大。有兩個針對文件系統對象的緩存(inode 和 dentry)。它們緩存最近使用過的文件系統對象。
  • 如何在虛擬機(vmware11)上運行linux系統
    有些人想體驗linux系統,又不想在自己的電腦上裝linux。那麼,在這裡小編將教大家如何在虛擬機上運行linux系統。下載正版VMware11可以同時下載linux系統鏡像VMware11下載完成以後,開始安裝。