shell 學習記錄

2021-07-08 12:45:42 字數 1835 閱讀 2063

1、 以兩個破折號(--) 來表示選項結尾的用法, 源自system v。自此之後命令列上看起來像選項的任何專案,都將

一視同仁的當成引數處置。

上面這個句話是什麼鬼意思???

2、shell是別的三種命令

1、內建命令(比如cd echo test)

2、shell函式

3、外部命令

shell變數

1、 變數名字=字元       中間沒有任何空格

當賦予的值內含空格時, **上引號。  比如 : printname="the is english"

2、 當變數作為第二個變數的新值時,不需要使用雙引號, 但是使用雙引號也沒有關係。

fullname=$printname

或者是fullname="$printname" 這兩個都可以

3、 當你將變數鏈結起來的時候,就需要引號了。

比如: fullname="$first $second $third"

重定向與管道

1、 以 < 改變標準輸入

2、 以 >改變標準輸出

3、 以 >>附加到檔案

4、 以| 建立管道 ,  progarm1 | program2  :將program1的標準輸出修改為program2的標準輸入

雖然 > 和 < 可將輸入與輸出連線到檔案, 不過管道可以把兩個以上執行中的程式銜接到一起。

tr [options] source-char-list replace-char-list:

-d 自標準輸入刪除 source-cahr-list所列的字元,而不是轉換

-s 如果重複出現source-char-list中的字元,會將其濃縮為乙個

如果沒有引數那麼就是 替換作用 。

tr 'a' 'b'  就是把a換成b

tr 『test』 'b' 只要遇到test這四個字元,都被替換成b

tr 'hello' 'world' 把 hello 這個字串替換為字串 world

/dev/tty 是乙個特殊的檔案,當程式開啟它時,unix會自動把它重定向到乙個終端。 這程式在必須讀取人工輸入時特別有用。

printf "enter new password"

stty -echo              #用來關閉自動列印每個輸入字元的功能

read pass < /dev/tty

printf "enter again:"

read pass2 < /dev/tty

stty echo

可是如果關閉自動列印,不從/dev/tty讀也可以實現同樣的功能? 那還為什麼用這種麻煩的方式列?

shell指令碼中的整數運算

有以下的幾種方法:

1、使用let操作:  let表示式內變數不用加空格(運算子之間不能有空格),let必須是完整的算術表示式,既有等號兩邊

var=1

let var2=var+2

2、用 (()) 來代替let, (() 這種用法可以只有等號右邊的計算,不一定需要等號及等號左邊的內容 

比如上述的運算使用 ((var2=var+2))  , 也可以使用var2=$((var+2))

。在裡面的var可以加上$也可以不加

即var2=$(($var+2))  和上面的兩個語句是一樣的功能

3、使用  var2=$[$var1+2]  或者使用var2=$[var+2]  方括號括起來也可以

4、使用expr和使用 (()) 一樣可以是完整算術表示式也可以不完整,即可以沒有等號和等號左邊的。

但是必須注意的是,運算子和引數之間必須要有空格。 另外 下面的兩個點 是 數字1左邊的 ` 而不是單引號。  

var2=`expr $var + 1`

shell學習記錄

1.shell 副檔名 sh 約定標記,告訴系統指令碼需要的直譯器,即哪一種shell 執行shell檔案的三種方法 test.sh bin sh test.sh bin bash test.sh注意 shell變數等號兩邊不能有空格,使用變數的時候加 符號字串擷取 與 刪除左邊字元 保留右邊字元 ...

shell學習記錄

段落 sed 的命令格式 sed command file sed command 動作 command1 file1 f test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是...

shell學習記錄 2 2

echo 這是指令碼的名稱 0 echo 這是指令碼的第1個引數 1 echo 這是指令碼的第2個引數 2 echo 這是指令碼的第3個引數 3 echo 這是指令碼的第4個引數 4 echo 這是指令碼的第5個引數 5 echo 這是指令碼的第6個引數 6 echo 這是指令碼的第7個引數 7 e...