shell之什么时候使用shell以及最简单的shell程序
生活随笔
收集整理的這篇文章主要介紹了
shell之什么时候使用shell以及最简单的shell程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為Shell似乎是各UNIX系統之間通用的功能,并且經過了POSIX的標準化。因此,Shell腳本只要“用心寫”一次,即可應用到很多系統上。因此,之所以要使用Shell腳本是基于:
但是,考慮到Shell腳本的命令限制和效率問題,下列情況一般不使用Shell:資源密集型的任務,尤其在需要考慮效率時(比如,排序,hash等等)。 需要處理大任務的數學操作,尤其是浮點運算,精確運算,或者復雜的算術運算(這種情況一般使用C++或FORTRAN 來處理)。 有跨平臺(操作系統)移植需求(一般使用C 或Java)。 復雜的應用,在必須使用結構化編程的時候(需要變量的類型檢查,函數原型,等等)。 對于影響系統全局性的關鍵任務應用。 對于安全有很高要求的任務,比如你需要一個健壯的系統來防止入侵、破解、惡意破壞等等。 項目由連串的依賴的各個部分組成。 需要大規模的文件操作。 需要多維數組的支持。 需要數據結構的支持,比如鏈表或數等數據結構。 需要產生或操作圖形化界面 GUI。 需要直接操作系統硬件。 需要 I/O 或socket 接口。 需要使用庫或者遺留下來的老代碼的接口。 私人的、閉源的應用(shell 腳本把代碼就放在文本文件中,全世界都能看到)。
#!/bin/bash echo "Hello World !"
“#!” 是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行,即使用哪一種Shell。echo命令用于向窗口輸出文本。
運行Shell腳本有兩種方法。
通過這種方式運行bash腳本,第一行一定要寫對,好讓系統查找到正確的解釋器。
這里的"系統",其實就是shell這個應用程序(想象一下Windows Explorer),但我故意寫成系統,是方便理解,既然這個系統就是指shell,那么一個使用/bin/sh作為解釋器的腳本是不是可以省去第一行呢?是的。
再看一個例子。下面的腳本使用? read ?命令從 stdin 獲取輸入并賦值給?PERSON 變量,最后在 stdout 上輸出:#!/bin/bash # Author : mozhiyan # Copyright (c) http://see.xidian.edu.cn/cpp/linux/ # Script follows here: echo "What is your name?" read PERSON echo "Hello, $PERSON"
運行腳本:
chmod +x ./test.sh
$./test.sh
What is your name?
mozhiyan
Hello, mozhiyan
$
- 簡單性:Shell是一個高級語言;通過它,你可以簡潔地表達復雜的操作。
- 可移植性:使用POSIX所定義的功能,可以做到腳本無須修改就可在不同的系統上執行。
- 開發容易:可以在短時間內完成一個功能強大又妤用的腳本。
但是,考慮到Shell腳本的命令限制和效率問題,下列情況一般不使用Shell:
如果你的應用符合上邊的任意一條,那么就考慮一下更強大的語言吧——或許是Perl、Tcl、Python、Ruby——或者是更高層次的編譯語言比如C/C++,或者是Java。即使如此,你會發現,使用shell來原型開發你的應用,在開發步驟中也是非常有用的。
打開文本編輯器,新建一個文件,擴展名為sh(sh代表shell),擴展名并不影響腳本執行,見名知意就好,如果你用php寫shell 腳本,擴展名就用php好了。
輸入一些代碼:
運行Shell腳本有兩種方法。
作為可執行程序
將上面的代碼保存為test.sh,并 cd 到相應目錄: chmod +x ./test.sh #使腳本具有執行權限 ./test.sh #執行腳本 注意,一定要寫成./test.sh,而不是test.sh。 運行其它二進制的程序也一樣,直接寫test.sh,linux系統會去PATH里尋找有沒有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的當前目錄通常不在PATH里,所以寫成test.sh是會找不到命令的,要用./test.sh告訴系統說,就在當前目錄找。通過這種方式運行bash腳本,第一行一定要寫對,好讓系統查找到正確的解釋器。
這里的"系統",其實就是shell這個應用程序(想象一下Windows Explorer),但我故意寫成系統,是方便理解,既然這個系統就是指shell,那么一個使用/bin/sh作為解釋器的腳本是不是可以省去第一行呢?是的。
作為解釋器參數
這種運行方式是,直接運行解釋器,其參數就是shell腳本的文件名,如: /bin/sh test.sh /bin/php test.php 這種方式運行的腳本,不需要在第一行指定解釋器信息,寫了也沒用。再看一個例子。下面的腳本使用? read ?命令從 stdin 獲取輸入并賦值給?PERSON 變量,最后在 stdout 上輸出:
總結
以上是生活随笔為你收集整理的shell之什么时候使用shell以及最简单的shell程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux之dd命令详解
- 下一篇: 不用变量交换2个值