shell額外的重定向運算子

2021-06-19 07:29:39 字數 1431 閱讀 8659

posix shell提供了防止檔案意外截斷的選項:執行set -c命令可開啟shell所謂的禁止覆蓋(noclobber),當它在開啟狀態下時,單純的》重定向遇到目標檔案已存在時,就會失敗。 >|運算子則可令noclobber選項失效。

shell的here document用法.(here documents)

cmd << delimiter

here document content

delimiter

它的作用就是將兩個 delimiter 之間的內容(here document content 部分) 傳遞給cmd 作為輸入引數。

delimiter只是乙個標識而已,可以替換成任意的合法字元

作為結尾的delimiter一定要頂格寫,前面不能有任何字元

作為結尾的delimiter後面也不能有任何的字元(包括空格)

作為起始的delimiter前後的空格會被省略掉

here document 不僅可以在終端上使用,在shell 檔案中也可以使用,例如下面的here.sh 檔案

在here document 的內容中,不僅可以包括普通的字元,還可以在裡面使用變數.

cat<< eof > output.sh

echo "this is output"

echo $1

eof使用sh here.sh heredocument 執行指令碼得到output.sh的內容

echo "this is output"

echo heredocument

但是有時候不想展開這個變數怎麼辦呢,可以通過在起始的 delimiter的中新增 雙引號實現來實現,例如將上面的here.sh 改為

cat<< "e"of > output.sh  #注意引號

echo "hello"

echo "world"

eof得到的output.sh 的內容為

echo "this is output"

echo $1

<< 變為 <<-

here document 還有乙個用法就是將 '<<' 變為 '<<-'。 使用 <<- 的唯一變化就是here document 的內容部分每行前面的 tab (製表符)將會被刪除掉,這種用法是為了編寫here document的時候可以將內容部分進行縮排(注意只有開頭的製表符會被刪除,開頭的空格則不會刪除)

使用program <> file,可供讀取與寫入操作。預設是在標準輸入上開啟file。一般來說,《以唯讀模式開啟檔案,而》以只寫模式開啟檔案。<>運算子則是以讀取與寫入兩種模式開啟給定的檔案。(有些系統不支援)

shell的運算子

shell運算子 bin bash filename day03.sh write time 2017 10 23 a 2b 5 運算子之間的要有空格,a b這樣是不可以的,下同 val expr a b echo a b val val expr a b echo a b val 再用到乘法的運算...

shell命令 連線符 重定向

二 萬用字元 三 連線符 四 輸出重定向 概念 shell是計算機軟體和硬體之間的翻譯官 echo echo hello world echo hello world echo hello world 注意 在shell中沒有字元和字串的區分,echo後面可以原樣輸出 把shell命令寫入指令碼的執...

shell運算子操作 算術運算子

a 10 b 20 echo a b expr echo a b expr echo a b expr echo a b expr echo a b expr if a b then echo a等於b else echo a不等於b fiif a b then echo a不等於b else ec...