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...