茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729835 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
F09_407.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [分享]學習寫linux上的script推薦之學習網站

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15773
[分享]給bash初學者的小禮物
給bash初學者的小禮物

一些bash編程中常犯的錯誤,來自abs-guide

注意!!!!這裡面的例子全部是錯誤的!!!

=====變量使用=====
1.將bash保留字符串定義為變量名/變量名中含有保留字符
case=123 #case是保留字串
ca((=123 #((是保留字符
var-1=123 #-是保留字符,用var_1好了


2.變量用數字開頭
12var=123


3.變量與函數定義重名
do_something ()
{
  echo "This function does something with \"$1\"."
}

do_something=do_something

do_something do_something


4.變量賦值=兩邊有空格
var1 = 123 # var1=123才行


===============
=====比較[]=====
5.[]內缺少空格
[$var -eq 5 ]
[ $var=ab ]


6.<>使用時不加\
[ $var < ab ] #這時<>被解釋為輸出重定向,[ $var \< ab ]才對


7.=\>\<與 -eq -gt -lt不分
[ $var -eq 45.6 ] #=\>\<用來比較字串,而eq gt lt只能用來比較整數,注意是整數,不是數值

=================
8.腳本的sha-bang中不能有非法字符,用dos/win中寫的東西是以\r\n換行的,腳本第1行實際是 #!/bin/bash\r\n,而只有#!/bin/bash\n才是合法的

9.子shell中對變量的操作是不能傳遞給它的父shell
var=123
( $var=456 )
echo $var #結果是123而不是456
echo 456|read var
echo $var #結果還是123,管道是會發起子shell的




原文出處:给bash初学者的小礼物 - Shell - ChinaUnix.net -
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|