You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改bash中结合last -10的printf命令以消除报错

解决printf解析%字符导致的报错问题

问题核心是last -10的输出包含%字符(比如tmux会话标识),而printf会将%识别为格式控制符,引发invalid format character错误。以下是几种可行的修改方案:

  • 方案一:用printf的%s占位符传递内容
    将last -10的输出作为printf的参数传入,通过%s占位符直接输出原始内容,避免解析其中的%:

    printf "Last logins (last -10)\n%s\n" "$(last -10)"
    
  • 方案二:改用echo命令(更简洁)
    echo默认不会解析格式控制符,加上-e参数支持换行符解析,效果和原命令一致:

    echo -e "Last logins (last -10)\n$(last -10)\n"
    
  • 方案三:转义输出中的%字符(备选)
    如果必须保留printf,可通过sed将输出中的%替换为%%(printf中表示字面%的写法),但步骤略繁琐:

    printf "Last logins (last -10)\n%s\n" "$(last -10 | sed 's/%/%%/g')"
    

内容的提问来源于stack exchange,提问作者DenisZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:05:01