在bash中接收字符串作为参数

时间:2014-04-26 17:24:51

标签: 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

1 个答案:

答案 0 :(得分: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"

正如我之前所说(在评论中),如有疑问,请使用双引号。