string - 如何将具有新行的字符串参数传递给 bash 文件,然后将完整的字符串传递给文件?

标签 string bash newline

我有一个字符串如下:

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 而不是 echoecho -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/

相关文章:

Java 正则表达式 : Matching Substring with newline followed by whitespace

windows - 用于搜索和替换字符串的批处理文件

java - 递归重复字符串

c - C 中的字符串数组

python - 使用Python子进程处理带括号的文件路径

windows - 在 Tcl : Set -eofchar to windows/unix respectively

android - 如何将 byte[] 转换为 String 而不会在 Android 中出现内存不足错误?

bash - shell 脚本可以删除或覆盖自身吗?

linux - 复制文件 - 它会等同于复制的变量吗?

java - Windows 和 Linux 之间的行尾不同吗?