首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Bourne shell printf迭代%s参数?

在这个问答内容中,我们讨论了Bourne shell中的printf命令,它是一个用于格式化输出的命令。在这个问题中,我们关注的是printf命令中的%s参数。

在Bourne shell中,printf命令用于格式化输出,它的语法如下:

代码语言:txt
复制
printf format-string [arguments]

其中,format-string是一个格式化字符串,它可以包含转义序列和占位符。在这个问题中,我们关注的是%s占位符,它表示一个字符串参数。

当printf命令使用%s占位符时,它会将下一个参数作为字符串输出。如果没有提供足够的参数,则会导致迭代。例如,如果我们在命令行中输入以下命令:

代码语言:txt
复制
printf "%s %s\n" "Hello"

这个命令将会输出:

代码语言:txt
复制
Hello %s

这是因为我们只提供了一个参数,而printf命令需要两个参数来替换%s占位符。在这种情况下,printf命令会将第一个参数替换为第一个%s占位符,并将第二个参数替换为第二个%s占位符。由于我们只提供了一个参数,第二个%s占位符没有被替换,因此它被输出了。

总之,当Bourne shell中的printf命令使用%s占位符时,如果没有提供足够的参数,则会导致迭代。这是因为printf命令需要足够的参数来替换所有的%s占位符。如果没有提供足够的参数,那么%s占位符将不会被替换,而是被输出。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解释型语言-shell

bash是 Bourne Again Shell 的缩写,是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。...n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数...length=${#array_name[@]} 或者 length=${#array_name[*]} 取得数组单个元素的长度: lengthn=${#array_name[n]} 七、echo&printf...命令用于格式化输出,是echo命令的增强版: $ printf "%d %s\n" 1 "abc" 1 abc 八、表达式 if [ expression ] then Statement(s)

1.5K31
  • Shell base用法描述

    bash是Linux和Unix下的shell。 本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。...同时,Bash 也是大多数Linux 系统默认的 Shell。 在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,像 #!...\c" 输出定向到文件 echo "hello world" > testFile 1.8. printf命令 和echo相比,printf模仿了c语言中的printf()方法,所以移植性更好。...语法 printf string [argument] string 为字符串 argument 为参数列表 格式替代符 在字符串中使用格式替换符占位,然后通过参数来对应带入,并最终输出对应字符串 printf..."%-10s %-8s %-6s\n" 姓名 性别 身高 格式替换符有%s,%d,%c,%f等 %s是替代字符串,-为左对齐,不写则是右对齐。

    32720

    Shell脚本常用命令一览

    -s: 用于从标准输入中读取命令,接收命令参数在子shell中执行; 使用案例: #示例1.使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态: sh -x check_ssh_login.sh...bash 命令(Shell灵魂) 描述:bash 是一个为GNU计划编写的Unix shell,它的名字是一系列缩写Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语...(Bourne again / Born again), Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。...$ printf '%d %s\n' 1 "abc" 1 abc # 没有引号也可以输出 $ printf %s abcdef abcdef #示例2.格式只指定了一个参数,但多出的参数仍然会按照该格式输出...,format-string 被重用 $ printf %s abc def abcdef $ printf "%s\n" abc def abc def $ printf "%s %s %s\n" a

    2K41

    Shell脚本常用命令一览

    -s: 用于从标准输入中读取命令,接收命令参数在子shell中执行; 使用案例: #示例1.使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态: sh -x check_ssh_login.sh...bash 命令(Shell灵魂) 描述:bash 是一个为GNU计划编写的Unix shell,它的名字是一系列缩写Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语...(Bourne again / Born again), Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。...$ printf %s abcdef abcdef #示例2.格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 $ printf %s abc def abcdef...,那么会有警告,提示无效的数字,此时默认置为 0 $ printf "The first program always prints'%s,%d\n'" Hello Shell -bash: printf

    1.3K10

    Linux Shell脚本面试25问

    示例如下所示: # chsh -s # chsh linuxtechi -s /bin/sh Q:3 可以在shell脚本中使用哪些类型的变量...Q:9 shell脚本中continue命令的作用 ? 答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。...Q:16 shell脚本如何比较字符串? 答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。 Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?...答:下面的表列出了Bourne shell为命令行设置的特殊变量。...内建变量 解释 $1 命令行中的脚本名字 $1 第一个命令行参数 $2 第二个命令行参数 …… …… $9 第九个命令行参数 $# 命令行参数的数量 $* 所有命令行参数,以空格隔开 Q:18 在shell

    1.5K50
    领券