我有一个字符串如下:
variable="[name]\nabc\n[ip]\n10.12.02\n[name2]\nxyz\n[ip2]\n2.3.536"
"some_bash.sh", :arg=>variable
在 some_bash.sh 中,我将参数放入文件中,如下所示:
echo "$1" >> /etc/some_file
在我得到的文件中:
[name]
我也收到 10.12.02 错误:找不到命令 name2:找不到命令 xyz:找不到命令 ip2: 找不到命令
但我想要如下内容:
[name]
abc
[ip]
10.12.02
[name2]
xyz
[ip2]
2.3.536
那么请告诉我我该怎么做并在文件中获得上述结果?
最佳答案
推荐使用 printf
而不是 echo
或 echo -e
因为它更便携。
虽然 POSIX
描述了 echo
的行为,但实际上它并没有达到应有的可移植性。 echo 的 POSIX 文档甚至建议“鼓励新应用程序使用 printf 而不是 echo。”
在 sampleScript.sh
中使用 printf
扩展字符串,启用转义序列的解释(\n
,\t
等。)。
#!/bin/bash
printf "$1\n" >> /etc/some_file
并将你的脚本传递给它
./sampleScript.sh "[name]\nabc\n[ip]\n10.12.02\n[name2]\nxyz\n[ip2]\n2.3.536"
关于string - 如何将具有新行的字符串参数传递给 bash 文件,然后将完整的字符串传递给文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852030/