【问题标题】:Storing a command into a variable? [duplicate]将命令存储到变量中? [复制]
【发布时间】: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 命令获得输出。为什么?

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    要将命令输出放入变量中,您需要使用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" 以避免字符串拆分和全局扩展。 (当然,在这种情况下它们不一定有害,但它们仍然是不必要的开销)。
    【解决方案2】:

    还有

    clock=`date "+%d %b %Y:%H:%M:%S %s"`
    echo "Welcome ! it is now: \n"
    echo $clock
    

    【讨论】:

    • $() 优于反引号,以提高可读性和嵌套能力。
    猜你喜欢
    • 2021-11-19
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2013-01-12
    • 2015-03-10
    • 2023-04-02
    相关资源
    最近更新 更多