這并不會打印出"this is the 2nd",而僅僅打印"this is the ",因為shell會去搜索變量numnd的值,但是這個變量時沒有值的。可以使用花括號來告訴shell我們要打印的是num變量:
num=2
echo "this is the ${num}nd"
#這將打印: this is the 2nd ,BASH 中變量定義是不需要的,沒有 "int i" 這樣的定義過程。如果想用一個變量,只要他沒有在前面被定義過,就直接可以用,當然你使用該變量的第一條語句應該是對他賦初值了,如果你不賦初值也沒關系,只不過該變量是空(注意:是 NULL,不是 0 )。大括號的作用,與雙引號的區別:大括號,雙引號使不能擴展,雙引號不能阻止變量的擴展,只能阻止通配符*的擴展,后文有詳細解釋。
其中 $var 是循環控制變量,[list] 是 var 需要遍歷的一個集合,do/done 對包含了循環體,相當于 C 語言中的一對大括號。另外如果do 和 for 被寫在同一行,必須在 do 前面加上 ";"。如: for $var in [list]; do 。下面是一個運用 for 進行循環的例子:
#!/bin/bash
for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done
# 如果列表被包含在一對雙引號中,則被認為是一個元素 for day in "Sun Mon Tue Wed Thu Fri Sat" do echo $day done
exit 0
注意上面的例子中,在 for 所在那行的變量 day 是沒有加 "$" 符號的,而在循環體內,echo 所在行變量 $day 是必須加上 "$" 符號的。另外如果寫成 for day 而沒有后面的 in [list] 部分,則 day 將取遍命令行的所有參數。如這個程序: