如何修改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
相关产品推荐
相关产品推荐

