string - shell 中的 printf 只显示第一个单词

标签 string shell printf

<分区>

我正在制作一个程序 shell (#!/bin/sh),问题是 printf 只显示字符串参数的第一个单词。

这是为您简化的代码摘录:

#!/bin/sh

test="Good morning"
printf "\n"
printf $test
printf "\n"

这段代码只输出Good

最佳答案

双引号变量以避免被 shell 分词

printf "$test"

此外,printf 的一般语法喜欢C会是有

printf <FORMAT> <ARGUMENTS...>

文本格式在<FORMAT>中给出,而格式字符串可能指向的所有参数都在此之后给出,此处由 <ARGUMENTS…> 指示.

您看到的问题是因为 bash 中的一个未加引号的变量调用分词。这意味着变量被空格分割(或者任何特殊变量 $IFS 被设置为)并且每个结果单词被用作一个 glob(它将扩展以匹配任何匹配的文件名)。你的问题是因为 split 部分。

关于string - shell 中的 printf 只显示第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699539/

相关文章:

linux - 如何在spark上执行shell脚本

c - C语言-Unix环境中的Fscanf和sprint命令

javascript - 在 JavaScript 中比较字符串的最快方法是什么?

linux - 导出在 shell 中不起作用

.net - 如何在 VB.Net 中拆分复杂的字符串

bash - 连接时变量会被覆盖

c - 为什么我的 printfs 给出不同的值?

c - 在汇编程序 AMD64 中,我调用 fprintf 但它一直无限循环

python - 如何在 Python 3 中删除字符串中的特殊字符?

string - Visual Basic 将文件加载到由制表符分隔的 string(,)