linux shell 簡單用法
一,linux shell 基本介紹
二,linux shell 基本用法
2.1基本語法
2.1.1Shell命令行書寫規則
1,在執行Shell命令時多個命令可以在一個命令行上運行,但此時要使用分號(;)分隔命令.
2,長Shell命令行可以使用反斜線字符()在命令行上擴充
echo &pwd
mkdir test1 \
|| cd test1
echo &pwd
2.1.2Shell程序中使用的參數
1,位置參數
由系統提供的參數稱爲位置參數。位置參數的值可以用
2,內部參數
上述過程中的
$0: 含命令所在的路徑。
$#: 傳遞給程序的總的參數數目。
$?: Shell程序在Shell中退出的情況,正常退出返回0,反之爲非0值。
$*: 傳遞給程序的所有參數組成的字符串。
3,
2.2條件語句
2.2.1if語句
2.2.3if語句的特殊用法
if 語句的判斷可以使用表達式,例如test函數
2.2.4if 語句未歸類用法
1,[]判斷表達式
判斷表達式可以用上述的test函數代替,這裏不討論test函數;[]表達式的內容比較多.只能先描述現用的,具體的以後再補充.
if [ "$1" = "-t" ]
then
if [ -n "$2" ]; then
timer=$2
fi
fi
上述例子中國,第一個[]表達式表示如果第一個參數是”-t”就執行then後語句;第二個表達式表示如果存在第二個參數,就執行then後語句把第二個參數的值給timer(這是個簡單的例子,沒有做保護).
現在討論下第一個[]表達式,爲什麼要用”“;如果用[ $1 = -t ],當有第一個參數的時候,該shell腳本正常執行,當沒有第一個參數的時候,該shell腳本會報錯,原因(推測)shell腳本是解釋型語言,當執行到
[ $1 = -t ]
發現$1 沒有,就把上面那句解釋爲=-t,因此報錯.
2.3循環語句
2.3.1while循環
下例簡單了做了一個循環,功能是說沒10秒打印一次date
timer=10;
while true;do
echo &date "+%B%d%A"
sleep $timer
done
三,linux shell 未歸類用法
3.1linux的基本步驟
3.1.1編輯Shell程序
編輯一個內容如下的源程序,保存文件名爲date
#!/bin/sh
timer=10;
while true;do
echo &date "+%B%d%A"
sleep $timer
done
注意:#! /bin/sh通知採用bash解釋。如果在echo語句中執行Shell命令date,則需要在date命令前加符號“&”,其中%B%d%A爲輸入格式控制符。
3.1.2建立可執行程序
編輯完該文件之後不能立即執行該文件,需給文件設置可執行程序權限。使用如下命令:
u@ubuntue$chmod +x date
注意:上述命令的意思是賦予date文件可執行的權限
3.1.3執行Shell程序
執行Shell程序有下面三種方法:
方法一:
u@ubuntue$./date
方法二:另一種執行date的方法就是把它作爲一個參數傳遞給Shell命令:
u@ubuntue$bash date
方法三:爲了在任何目錄都可以編譯和執行Shell所編寫的程序,即把/home/study的這個目錄添加到整個環境變量中。
u@ubuntue$xport PATH=/home/study:$PATH
u@ubuntue$bash date
3.2linux shell 執行多個命令的幾種方法
3.2.1每個命令之間用;隔開
說明:各命令的執行給果,不會影響其它命令的執行。換句話說,各個命令都會執行,
但不保證每個命令都執行成功。
3.2.2.每個命令之間用&&隔開
說明:若前面的命令執行成功,纔會去執行後面的命令。這樣可以保證所有的命令執行完畢後,執行過程都是成功的。
3.2.3.每個命令之間用||隔開
說明:||是或的意思,只有前面的命令執行失敗後纔去執行下一條命令,直到執行成功
一條命令爲止。
echo &pwd
mkdir test1 && cd test1
mkdir test1 || cd test1
echo &pwd