對於shell指令碼的書寫,約定俗成,第一行必須如下所示:(務必放在檔案的第一行)
#!/bin/sh
...
符號#!用來告訴系統執行該指令碼的程式,這裡使用/bin/sh。編輯結束並儲存;這裡最好使用「!/bin/bash」而不是「!/bin/sh」,如果使用tc shell改為tcsh,其他類似。
如果要執行該指令碼,必須先使用chmod命令開啟指令碼的執行許可權,如下:
chmod
+x yourscriptname
注釋:在進行shell程式設計時,以 # 開頭的句子表示注釋;
變數:在其他程式語言中你必須使用變數。在shell程式設計中,所有的變數都由字串組成,並且大家不需要對變數進行宣告;當你要賦值給乙個變數,首先熟悉如下知識;
1.需要給變數賦值時,可以這麼寫:變數名=值
1-1. 首個字元必須為字母(a-z,a-z)
1-2 中間不能有空格,可以使用下劃線(_)
1-3 不能使用標點符號
1-4 不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)
2. 要取用乙個變數的值,只需在變數名前面加乙個$( 注意: 給變數賦值的時候,不能在」=」兩邊留空格 )
3. echo輸出(列印)
ok,書寫第乙個完整shell指令碼:
#!/bin/sh
#
對變數賦值:
himi="helloshell"
#
等號兩邊均不能有空格存在
#
現在列印變數
a
的內容:
echo
"a is:"
echo
$himi
ok,終端命令&輸出如下:
last login: sat apr 14 14:16:13 on ttys000
mac:~ himi$ cd /users/himi/desktop/
mac:desktop himi$ chmod +x himi
mac:desktop himi$ ./himi
a is:
helloshell
mac:desktop himi$
#!/bin/sh
#對變數賦值:
himi=」test」 #等號兩邊均不能有空格存在
echo $himi
echo $himi a
echo 「a $himi」
#注意混淆
echo 「a $himi_ok」
#正確寫法:
echo 「a $_ok」
終端執行&列印:
mac:desktop himi$ ./himi
test
test
a
a test
a
a test_ok
mac:desktop himi$
童鞋們可以看到《 echo「a $himi_ok」 》這裡沒有正常列印出來,這是由於shell會去搜尋變數himi_ok的值,而實際上這個變數此時並沒有值。這時,我們可以用花括號來告訴shell要列印的是himi變數;
還需要注意
shell
的預設賦值是字串賦值。比如:
#!/bin/sh
#
字串賦值:
_int=19
_tot=$_int+89
echo $_tot
列印的_tot不是108 !而是 19+89 !出現此的原因就是因為shell預設是字串賦值,應該需要計算應該先熟悉如下幾個知識:
let 表示數**算
$ 表示將中括號內的表示式作為數**算先計算結果再輸出。
expr 用於整數值運算,每一項用空格隔開
上面前兩種方式在
bash
下有效,在
sh下會出錯。
ok,知道這些就可以重新將剛才的指令碼改寫成如下形式:
#!/bin/sh
#
字串賦值:
_int=19
_tot=$[$_int+89]
echo
$_tot
3種形式輸出的結果都是 108 ;
c shell只支援整數的運算;
運算子如下圖所示:
簡單寫幾個運算:
注意:1.運算子兩側都必須有空格!!
2.c shell不支援浮點運算符(ps.如果您想要執行更加複雜的數**算,可用unix的實用程式bc和nawk)
shell教程(一) 基礎概念
一般命令列,指的是shell。shell是乙個程式,接受從鍵盤輸入的命令,然後把命令傳遞給作業系統去執行。這叫做 shell 提示符,無論何時當 shell 準備好了去接受輸入時,它就會出現。然而,它可能會以各種各樣的面孔顯示,這則取決於不同的 linux 發行版,它通常包括你的使用者名稱 主機名,...
Shell指令碼書寫總結
指令碼開頭必須有 bin sh 指令碼結束後用 chmod x filename 修改指令碼使用許可權 變數定義 變數名 值 在變數名之前加乙個 就可以取出變數值 bin sh 對變數賦值 a hello world 列印變數a的值 echo a is a num 2 echo this is th...
shell指令碼書寫規範
n年後的第一更,這裡主要記錄一些平時自己不太注意的點 usr bin env bash 2.一行 太長,需要用 進行分行,看起來更美觀 configure prefix usr sbin path usr sbin nginx conf path etc nginx nginx.conf 3.在指令...