【发布时间】:2013-11-05 15:56:00
【问题描述】:
clock=date "+%d %b %Y:%H:%M:%S %s"
echo "Welcome ! it is now: \n"
echo $clock
clock 变量实际上并没有像我预期的那样从date 命令获得输出。为什么?
【问题讨论】:
clock=date "+%d %b %Y:%H:%M:%S %s"
echo "Welcome ! it is now: \n"
echo $clock
clock 变量实际上并没有像我预期的那样从date 命令获得输出。为什么?
【问题讨论】:
要将命令输出放入变量中,您需要使用var=$(command) 语法。因此,如果你使用它会起作用:
clock=$(date "+%d %b %Y:%H:%M:%S %s")
echo -e "Welcome ! it is now: \n"
echo $clock
还有,
echo -e。%H:%M:%S 日期格式可以简化为 %T。总之可以是:
printf "Welcome ! it is now: \n%s\n" "$(date "+%d %b %Y:%T %s")"
【讨论】:
-e 仅在 bash 中是必需的,因为 POSIX echo(没有标准选项)应将 \n 视为换行符。首选printf "Welcome! it is now: %s\n" "$(date ...)" 代替echo。
echo "$clock" 以避免字符串拆分和全局扩展。 (当然,在这种情况下它们不一定有害,但它们仍然是不必要的开销)。
还有
clock=`date "+%d %b %Y:%H:%M:%S %s"`
echo "Welcome ! it is now: \n"
echo $clock
【讨论】:
$() 优于反引号,以提高可读性和嵌套能力。