echo \"$(hostname -I)\"
输出"111.111.111 "
我怎样才能避免额外的空间并改为"111.111.111"
答案1
如果命令打印空格,它将包含在输出中。好吧,实际上,由于命令替换没有被引用,结果将被分词,并且两个字符串"111.111.111
和将作为两个不同的参数"
传递,然后打印用单个空格连接。它不会改变这里的输出,但在许多其他情况下这很重要。如果命令替换后没有任何内容,则空格将在分词过程中消失。echo
echo
echo
由于它可能会打印多个 IP 地址,因此很可能hostname -I
会打印一个尾随空格,并且在每个 IP 地址后打印一个空格比跳过最后一个空格更简单。
要删除空格,您可以使用后缀删除扩展:
ip="$(hostname -I)"
ip="${ip% }"
printf '"%s"\n' "$ip"
或者利用对你有利的分词:
printf '"%s"\n' $(hostname -I)
后者会单独引用每个以空格分隔的 IP 地址,并每行打印一个。