一個簡單的例子:
#!/bin/bashecho "What's your favourite star?"select var in "Leehom" "Vae" "Jay" "Jolin"; dobreak;doneecho "You have selected $var"
運行結果:
root@ubuntu:~# ./star.shWhat's your favourite star?1) Leehom2) Vae3) Jay4) Jolin#? 1You have selected Leehomroot@ubuntu:~#
開始 , 按照網上寫的是
#!/bin/sh
然後提示
select: not found
Syntax error: "done" unexpected
然後,網上說,sh不一定指向bash
bin/sh 是一個軟串連,在windows系統中相當於捷徑,linux系統的軟串連的指向不一定是bash,如果軟串連指向的是bin/bash那麼,bin/sh和bin/bash是一樣的,但如果你的bin/sh指向的是bin/csh或者bin/ksh那麼bin/sh與bin/bash是就是一樣的了。
改為bash就OK 了~~
==========================================速度來科普==============================
原文來自:http://www.cnblogs.com/liehuzuo/archive/2012/05/08/2490249.html
linux的shell編程中#!/bin/sh和$bash是什麼意思
#! /bin/sh 是指此指令碼使用/bin/sh來解釋執行,#!是特殊的表示符,其後面根的是此解釋此指令碼的shell的路徑。
$bash $表示系統提示符,$ 表示此使用者為普通使用者,超級使用者的提示符是#。
bash是shell的一種,是linux下最常用的一種shell。
$bash的意思是執行一個子shell,此子shell為bash。
要注意,在每個指令碼的開頭都使用"#!",這意味著告訴你的系統這個檔案的執行需要指定一個解 釋器.#!實際上是一個2位元組[1]的魔法數字,這是指定一個檔案類型的特殊標記, 換句話說, 在 這種情況下,指的就是一個可執行檔指令碼(鍵入man magic來獲得關於這個迷人話題的更多詳細 資訊).在#!之後接著是一個路徑名.這個路徑名指定了一個解釋指令碼中命令的程式,這個程式可 以是shell,程式語言或者是任意一個通用程式.這個指定的程式從頭開始解釋並且執行指令碼中 的命令(從#!行下邊的一行開始),忽略注釋.[2]
如: 1 #!/bin/sh 2 #!/bin/bash 3 #!/usr/bin/perl 4 #!/usr/bin/tcl 5 #!/bin/sed -f 6 #!/usr/awk -f
注意: #! 後邊給出的路徑名必須是正確的,否則將會出現一個錯誤訊息,通常是 "Command not found",這將是你運行這個指令碼時所得到的唯一結果.
如果在指令碼的裡邊還有一個#!行,那麼bash將把它認為是一個一般的注釋行.
====================================================================================================