shell中各種括號用法
一.小括號
- 表示整體,裡面可以包含邏輯
grep -E "^(s|S)" /etc/init.d/functions #以s或S開頭的行
grep -E "^(root|laowang)\>" /etc/passwd|cut -d : -f7 #檢視使用者名稱是root或laowang的shell
grep -E "(root)+" /etc/passwd #至少包含一個root的行
- 後項引用
echo "/etc/sysconfig/-network-scripts/" |sed -r '[email protected]^(.*/)([^/]+/?)@\[email protected]' 取目錄
- 在shell腳本里表示開子程序
[ $# -ne 0 ] && (echo "error";exit) #這樣不會退出,因為小括號開了子程序,不會退出當前程序
[ $# -ne 0 ] && { echo error;exit; } #這樣可以,注意大括號兩邊有空格
- 雙層小括號
可以進行算數運算、比較,可以進行邏輯運算,但不支援 -a -o ! 等邏輯運算
if (($num <= 127 & $num > 0)); then
echo OK
fi
二.中括號
2.1單中括號[]
等價於test,注所以[和]的前後需要加空格
2.2雙中括號[[ ]]
①[[是 bash 程式語言的關鍵字。並不是一個命令,[[ ]] 結構比[ ]結構更加通用。在[[和]]之間所有的字元都不會發生檔名擴充套件或者單詞分割,但是會發生引數擴充套件和命令替換。
②支援字串的模式匹配,使用=~操作符時甚至支援shell的正則表示式。字串比較時可以把右邊的作為一個模式,而不僅僅是一個字串,比如[[ hello == hell? ]],結果為真。[[ ]] 中匹配字串或萬用字元,不需要引號。
③使用[[ ... ]]條件判斷結構,而不是[ ... ],能夠防止指令碼中的許多邏輯錯誤。比如,&&、||、<和> 操作符能夠正常存在於[[ ]]條件判斷結構中,但是如果出現在[ ]結構中的話,會報錯。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不適用雙括號, 則為if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。
三.大括號
3.1、常規用法
①大括號拓展。(通配(globbing))將對大括號中的檔名做擴充套件。在大括號中,不允許有空白,除非這個空白被引用或轉義。第一種:對大括號中的以逗號分割的檔案列表進行拓展。如 touch {a,b}.txt 結果為a.txt b.txt。第二種:對大括號中以點點(..)分割的順序檔案列表起拓展作用,如:touch {a..d}.txt 結果為a.txt b.txt c.txt d.txt
ls {ex1,ex2}.sh
ex1.sh ex2.sh
ls {ex{1..3},ex4}.sh
ex1.sh ex2.sh ex3.sh ex4.sh
ls {ex[1-3],ex4}.sh
ex1.sh ex2.sh ex3.sh ex4.sh
3.2字串提取&替換 ②程式碼塊,又被稱為內部組,這個結構事實上建立了一個匿名函式 。與小括號中的命令不同,大括號內的命令不會新開一個子shell執行,即指令碼餘下部分仍可使用括號內變數。括號內的命令間用分號隔開,最後一個也必須有分號。{}的第一個命令和左括號之間必須要有一個空格。
第一種模式:${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。
3.3正則表示式
- 表示前面模式匹配的次數
ifconfig | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" #搜尋IP
-
四、符號$後的括號
(1)${a} 變數a的值, 在不引起歧義的情況下可以省略大括號。
(2)$(cmd) 命令替換,和`cmd`效果相同,結果為shell命令cmd的輸,過某些Shell版本不支援$()形式的命令替換, 如tcsh。
(3)$((expression)) 和`expression`效果相同, 計算數學表示式exp的數值, 其中exp只要符合C語言的運算規則即可, 甚至三目運算子和邏輯表示式都可以計算。
相關推薦
shell中各種括號用法
一.小括號 表示整體,裡面可以包含邏輯 grep -E "^(s|S)" /etc/init.d/functions #以s或S開頭的行 grep -E "^(root|laowang)\>" /etc/passwd|cut -d : -f7 #檢視使用者名稱是roo
[ SHELL編程 ] shell中各種括號的使用方法
也會 保留字 val 返回值 之間 數值 dir 常用 過去 轉載自:http://www.jb51.net/article/60326.htm 在這裏我想說的是幾種shell裏的小括號,大括號結構和有括號的變量,命令的用法,如下:1.${var} 2.$(cmd) 3.(
shell中各種括號的作用()、(())、[]、[[]]、{}
雙中括號 語言 八進制 引用數組 存在 作用 版本 amp res 一、小括號,圓括號()1、單小括號 () ①命令組。括號中的命令將會新開一個子shell順序執行,所以括號中的變量不能夠被腳本余下的部分使用。括號中多個命令之間用分號隔開,最後一個命令可以沒有分號,各命
shell中各種括號()、(())、[]、[[]]、{}的作用
pre 子shell 長度 home 不同 str 標準 去掉 能夠 技巧小結: 字符串比較用雙中括號[[ ]];算數比較用單中括號[ ]——左右留空格 算數運算用雙小括號(( )) ;shell命令及輸出用小括號( )——左右不留空格 快速替換用花括號{ }——左右留空格
shell中各種括號()、(())、[]、[[]]、{}的作用和區別
一、小括號,圓括號() 1、單小括號 () ①命令組。括號中的命令將會新開一個子shell順序執行,所以括號中的變數不能夠被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後一個命令可以沒有分號,各命令和括號之間不必有空格。 ②命令替換。等同於`
shell中的各種括號用法
本文總結shell中各種括號的用法。參考《Linux命令列與shell指令碼程式設計大全》 一、圓括號() 1、建立程序列表 例如:$ (pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls) //最後輸出的值表示子shell的
shell 裡面的if的各種括號用法
if裡面會出現下面四種括號形式 if [ $a -lt 5 ] 當使用lt這種符號的時候就只需要一箇中括號 if [[ $a < 5 ]] 這裡就需要兩個中括號 if() 當一對小括號的時候一般放的是命令 if(($a<5)) 也可以這樣判斷大小 附加下面
linux bash shell中for的用法and示例
bash shell腳本中for的用法關於linux bash shell中的for語句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循環命令,今天就介紹一下關於for的一些用法。文中任何錯誤希望大佬們一一指出,不勝感激。bash sh
shell 中seq的用法 echo -n用法
字符串 one 一個 echo ddd ech 換行 shel ron 用法:seq [選項]... 尾數 或:seq [選項]... 首數 尾數 或:seq [選項]... 首數 增量 尾數 從1循環到100的兩種方法(bash 其它的shell沒試過)for x i
bash shell中的特殊用法
知識 padding OS family 路徑 base ont style one 1 ${BASH_SOURCE-$0} 表示當前正在執行的腳本的完整路徑。 2 cd -P 以物理路徑進入 /usr/localhadoop現在鏈到/home/houzhizhen/usr
【轉載】shell中EOF的用法
shel mys only 輸入 sele eof mar 用法 passwd Shell中通常將EOF與 << 結合使用,表示後續的輸入作為子命令或子Shell的輸入,直到遇到EOF為止,再返回到主調Shell。可以把EOF替換成其他東西意思是把內容當作標準輸
Linux中的括號用法
結果 數值 條件 匹配模式 初始化 技術分享 最長 file 算術 一、Linux中的小括號(也叫圓括號)“( )”的用法 1.單小括號() 1)數組賦值或者初始化數組; 2)子Shell賦值:小括號中的內容會開啟一個子shell獨立運行;括號中以分號連接,最後一個命令不需
shell中IF的用法介紹
一、語法結構 if [ condition ] then statements [elif condition then statements.
shell中date的用法
顯示年月日 date +%F 2018-12-15 指定日期往後推三天 a=date -d "20160508 3 days" "+%Y%m%d" echo $a 輸出結果為 20160511 以今天為基礎,向後推一天 (今天20181215) a=date +%Y%m%d --da
shell中花括號,3個小於號功能
針對不同的變數狀態賦值(沒設定、空值、非空值): file−my.file.txt:若{file-my.file.txt}: 若file−my.file.txt:若file沒有設定,則使用my.file.txt作返回值。(空值及非空值時不作處理) file:−my.file.txt:若{file:-my.fi
shell中各種奇怪的符號整理
各種奇怪的符號整理 () 子shell中執行 (()) 數值比較,運算,支援正則 ((i=1;i<=3;i++)) ,((commond1 && commond2)
shell 中 seq的用法總結
用法:seq [選項]... 尾數 或:seq [選項]... 首數 尾數 或:seq [選項]... 首數 增量 尾數 以指定增量從首數開始列印數字到尾數。 -f, --format=格式 使用printf 樣式的浮點格式 -s, --separator=字
shell中EOF等用法總結
最近由於工作需要寫了一個處理資料的指令碼,有幾個用法在此記錄一下。下面是程式碼 #!/bin/bash if [[ -z $userDir ]] then export userDir="/tmp/" fi if [[ -z $spotDir ]] then
Linux Shell中引號的用法
shell可以識別4種不同型別的引字元號: 單引號字元' 雙引號字元" 反斜槓字元\ 反引號字元` 1. 單引號 ( ' ' )[email protected][script]$ grep Susan phonebook Susan Goldberg 403-
linux下shell中(())雙括號運算子的使用詳解
在剛開始學習inux shell指令碼程式設計時候,對於它的 四則運算以及邏輯運算。估計很多朋友都感覺比較難以接受。特變邏輯運算子”[]”使用時候,必須保證運算子與算數 之間有空格。 四則運算也只能藉助:let,expr等命令完成。 今天講的雙括號”(())”結構語句,