我有一个多重遗传工具,我想把它转化成一个单边的字符串:
cat <<-"PHPCONF" > /etc/php/*/zz_overrides.ini
[PHP]
post_max_size = 200M
upload_max_filesize = 200M
cgi.fix_pathinfo = 0
PHPCONF我能得到的最接近的数据如下:
cat >"/etc/php/*/zz_overrides.ini" <<< "[PHP] post_max_size = 200M upload_max_filesize = 200M cgi.fix_pathinfo = 0"但我不认为在每个指令都有可能之后,line会中断,因为最终结果是一个字符串。也许到底有什么“非正统”的方式?
来文件和下面的字符串都是为了替换这个繁重的sed操作:
sed -i "s/post_max_size = .M/post_max_size = 200M/ ; s/upload_max_filesize = .M/upload_max_filesize = 200M/ ; s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/*/fpm/php.ini发布于 2018-01-27 13:32:13
撇开可以只使用printf "this\nthat\n" > /some/file这一事实不谈,您可以使用例如ANSI引用的换行符来生成这里的字符串:
$ cat <<< 此外,由于引号,这将尝试在一个名为*的目录中创建一个文件:cat > "/etc/php/*/zz_overrides.ini"这在Bash中是可行的,但是只有当glob匹配一个文件时(如果您有/etc/php/foo/zz_overrides.ini和/etc/php/bar/zz_overrides.ini,Bash会给出一个错误)。cat > /etc/php/*/zz_overrides.inithis\nthat'
this
that此外,由于引号,这将尝试在一个名为D2的目录中创建一个文件:
A3
这在Bash中是可行的,但是只有当glob匹配一个文件时(如果您有D4和D5,Bash会给出一个错误)。
A6
发布于 2018-01-27 12:42:28
我认为bash允许您直接使用带有换行符的字符串,而不需要一个本地文档,或者调用外部命令(如cat):
$ php_conf='
[PHP]
post_max_size = 200M
upload_max_filesize = 200M
cgi.fix_pathinfo = 0
'
$ echo "$php_conf"
[PHP]
post_max_size = 200M
upload_max_filesize = 200M
cgi.fix_pathinfo = 0https://unix.stackexchange.com/questions/419964
复制相似问题