<分区>
我正在制作一个程序 shell (#!/bin/sh),问题是 printf 只显示字符串参数的第一个单词。
这是为您简化的代码摘录:
#!/bin/sh
test="Good morning"
printf "\n"
printf $test
printf "\n"
这段代码只输出Good
。
<分区>
我正在制作一个程序 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/