Bash脚本 - 日志验证

时间:2009-07-09 13:02:39

标签: shell

如何验证bash脚本中是否存在LOGNAME

if [`logname`]; then
    echo -e \\t "-- Logname : `logname`" >> $normal_output_filename
fi

上面给出了一个错误行76:[logname]:找不到命令

5 个答案:

答案 0 :(得分:3)

也许试试:

if [ -e /bin/logname ]; then
    LOGNAME=`logname`
    echo -e \\t "-- Logname : ${LOGNAME}" >> $normal_output_filename
fi

实际上,使用命令替换最好不要使用backtics,而是:

LOGNAME=$(logname)

使用此语法可以轻松嵌套命令替换,而不必担心使用旧的backtic语法时的反斜杠层。

HTH

欢呼声,

答案 1 :(得分:3)

if [ `logname` ]; then
    echo -e \\t "-- Logname : `logname`" >> $normal_output_filename
fi

注意[和`。

之间的空间

答案 2 :(得分:1)

使用这样的反复使用时:

   `logname`

执行命令logname。我想这不是故意的,不是吗?

看看command substitution in Bash Beginners Guide

答案 3 :(得分:0)

您可以尝试使用“which”命令查看指定的命令是否存在:

if which logname >/dev/null 2>&1; then
     #do something here
fi

答案 4 :(得分:0)

行。另一个答案。不太确定是否适合你,但是:

if test -n `logname`; then
    echo -e \\t "-- Logname : `logname`"
fi

我想在if你要检查logname命令是否返回任何东西(当它不是?)。如果是,则打印出来。

test -n检查下一个参数是否为空字符串。