我有一行代码
printf "%5d%s%s%d%s" $opNum $IDLE_TEXT $LINE_ENDER $ops "."
传递的所有变量都是定义的,但是出于某种不明智的原因,printf正试图在调用脚本的dir中抓取文件。
错误输出示例:
./asg4.sh: line 248: printf: alpha.sh: invalid number 9:1243210asg4.sh
任何人都知道这里发生了什么?
答案 0 :(得分:1)
如果您打算.
将其作为输出的一部分,请将其作为<FORMAT>
部分而非的一部分,而不是<ARGUMENTS...>
部分1}}部分,当您认为printf
作为
printf <FORMAT> <ARGUMENTS...>
因此在前一部分中添加.
printf "%5d%s%s%d." "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops"
# ^^^ Adding the . to the <format> section
并双引所有shell变量,以避免shell中默认字段分隔符的分词。
从下面的评论来看,似乎因为参数中缺少双引号是实际错误的原因。在您的情况下*
尝试扩展文件夹内容。
答案 1 :(得分:0)
对未加引号的变量扩展的(扩展后)值执行Globbing。
以下可能有其他问题(取决于包含的值),但不应导致与globbing相关的问题。
printf "%5d%s%s%d%s" "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops" "."