2014-04-26 42 views
0

我需要創建一個bash函數,它接收字符串作爲參數,將其分配給另一個變量並打印該變量以及其他一些變量。 我試過,但它不工作在bash中接收字符串作爲參數

文件log.sh

log() {   
      if [ $# -lt "3" ] 
      then 
       echo $# 
       return -1 
      fi  
      CALLER="$1" 
      ERRTYPE="$2" 
      ERRMSG="$3" 
      DATE=$(date +"%d/%m/%Y - %H:%M:%S") 
      echo "$CALLER - $ERRTYPE - $ERRMSG - $DATE -$USER" 
     } 

log $1 $2 $3 

電話:

bash log.sh function WRT "log test 123" 

輸出:

funcion - WAR - log - 26/04/2014 - 11:43:44 - USER 
+4

確定嗎?對我來說工作得很好。 – axiom

+0

不適合我。不知道問題是什麼 – user3013172

+0

我會建議你的腳本使用DOS行結尾,但我認爲如果是這種情況,你的輸出將在行的開頭有' - USER'。 – chepner

回答

3

在評論(現在編輯到問題)你說:

log() { 
    if [ $# -lt "3" ] 
    then 
     echo $# 
     return -1 
    fi 
    CALLER="$1" 
    ERRTYPE="$2" 
    ERRMSG="$3" 
    DATE=$(date +"%d/%m/%Y - %H:%M:%S") 
    echo "$CALLER - $ERRTYPE - $ERRMSG - $DATE - $USER" 
} 

log $1 $2 $3 

問題是,如果$3包含「errmsg lala lala」,則將5個參數傳遞給log,但只打印前三個。

你應該使用:

log "$1" "$2" "$3" 

正如我剛纔所說(在評論),在有疑問的情況下,使用雙引號。

+0

謝謝!你是對的! – user3013172

相關問題