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

在bash中接收字符串作为参数,bash,Bash,我需要创建一个bash函数,该函数接收字符串作为参数,将其分配给另一个变量,并打印该变量和一组其他变量。 我试过了,但没用 文件log.sh: log() { if [ $# -lt "3" ] then echo $# return -1 fi CALLER="$1" ERRTYPE

我需要创建一个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
电话:

输出:

funcion - WAR - log - 26/04/2014 - 11:43:44 - USER
在评论中(现在编辑成问题),你说:

问题在于,如果
$3
包含“
errmsg-lala-lala
”,则将5个参数传递给
log
,但只打印前三个参数

你应使用:

log "$1" "$2" "$3"
正如我之前(在评论中)所说,如果有疑问,请使用双引号。

在评论(现在编辑到问题中)中,您说:

问题在于,如果
$3
包含“
errmsg-lala-lala
”,则将5个参数传递给
log
,但只打印前三个参数

你应使用:

log "$1" "$2" "$3"
正如我之前(在评论中)所说,如果有疑问,请使用双引号。

在评论(现在编辑到问题中)中,您说:

问题在于,如果
$3
包含“
errmsg-lala-lala
”,则将5个参数传递给
log
,但只打印前三个参数

你应使用:

log "$1" "$2" "$3"
正如我之前(在评论中)所说,如果有疑问,请使用双引号。

在评论(现在编辑到问题中)中,您说:

问题在于,如果
$3
包含“
errmsg-lala-lala
”,则将5个参数传递给
log
,但只打印前三个参数

你应使用:

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


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

你确定吗?对我来说很好,但对我来说不是。不知道问题出在哪里没有对赋值的RHS执行分词;缺少引号不是问题所在。你能复制并粘贴你键入的确切命令和确切输出吗?另外,你没有在原始问题中发布导致问题的实际调用;如果你一开始就发布了
log$1$2$3
,那么解决方案就显而易见了。你确定吗?对我来说很好,但对我来说不是。不知道问题出在哪里没有对赋值的RHS执行分词;缺少引号不是问题所在。你能复制并粘贴你键入的确切命令和确切输出吗?另外,你没有在原始问题中发布导致问题的实际调用;如果你一开始就发布了
log$1$2$3
,那么解决方案就显而易见了。你确定吗?对我来说很好,但对我来说不是。不知道问题出在哪里没有对赋值的RHS执行分词;缺少引号不是问题所在。你能复制并粘贴你键入的确切命令和确切输出吗?另外,你没有在原始问题中发布导致问题的实际调用;如果你一开始就发布了
log$1$2$3
,那么解决方案就显而易见了。你确定吗?对我来说很好,但对我来说不是。不知道问题出在哪里没有对赋值的RHS执行分词;缺少引号不是问题所在。你能复制并粘贴你键入的确切命令和确切输出吗?另外,你没有在原始问题中发布导致问题的实际调用;如果你一开始就发布了
log$1$2$3
,那么解决方案就显而易见了。谢谢!你是对的!谢谢你是对的!谢谢你是对的!谢谢你是对的!