printf 在调用脚本的目录中使用我的文件
printf is using my files in the directory the script is called from
我有一行代码
printf "%5d%s%s%d%s" $opNum $IDLE_TEXT $LINE_ENDER $ops "."
传递的所有变量都已定义,但出于某些不正当的原因,printf 正试图从调用脚本的目录中获取文件。
错误输出示例:
./asg4.sh: line 248: printf: alpha.sh: invalid number 9:1243210asg4.sh
有人知道这里发生了什么吗?
如果您的目的是让 .
作为输出的一部分,请将其作为 <FORMAT>
部分的一部分 而不是 部分在 <ARGUMENTS...>
部分,当您认为 printf
与
一样工作时
printf <FORMAT> <ARGUMENTS...>
所以在前面的部分加上.
printf "%5d%s%s%d." "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops"
# ^^^ Adding the . to the <format> section
并双引号所有 shell 变量,以避免 shell.
中的默认字段分隔符进行分词
从下面的评论来看,似乎是因为参数中缺少双引号是 实际 错误的原因。在您的情况下 *
试图扩展文件夹内容。
对未加引号的变量扩展的(post-扩展)值执行通配。
以下可能有其他问题(取决于包含的值),但不应导致与 globbing 相关的问题。
printf "%5d%s%s%d%s" "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops" "."
我有一行代码
printf "%5d%s%s%d%s" $opNum $IDLE_TEXT $LINE_ENDER $ops "."
传递的所有变量都已定义,但出于某些不正当的原因,printf 正试图从调用脚本的目录中获取文件。
错误输出示例:
./asg4.sh: line 248: printf: alpha.sh: invalid number 9:1243210asg4.sh
有人知道这里发生了什么吗?
如果您的目的是让 .
作为输出的一部分,请将其作为 <FORMAT>
部分的一部分 而不是 部分在 <ARGUMENTS...>
部分,当您认为 printf
与
printf <FORMAT> <ARGUMENTS...>
所以在前面的部分加上.
printf "%5d%s%s%d." "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops"
# ^^^ Adding the . to the <format> section
并双引号所有 shell 变量,以避免 shell.
中的默认字段分隔符进行分词从下面的评论来看,似乎是因为参数中缺少双引号是 实际 错误的原因。在您的情况下 *
试图扩展文件夹内容。
对未加引号的变量扩展的(post-扩展)值执行通配。
以下可能有其他问题(取决于包含的值),但不应导致与 globbing 相关的问题。
printf "%5d%s%s%d%s" "$opNum" "$IDLE_TEXT" "$LINE_ENDER" "$ops" "."