我需要创建一个接收字符串作为参数的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
答案 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"
正如我之前所说(在评论中),如有疑问,请使用双引号。