























1 yangg 2019 年 6 月 17 日k=$(printf \n\n\n) |
5 adoyle 2019 年 6 月 18 日@Kobayashi 感谢回复。while + read 是个好办法,如果用 bash 4 的话,可以用 readarray 来简化写法 `readarray k < <(printf '\n\n\n')`。 > 另外,例 1 中,你的引号使用方法完全是错误的。建议了解一下 word-splitting,不要乱用引号。 恩,例 1 中的引号对于我的问题的确没有意义。不过乱用引号不会造成额外问题,加引号是最保守的,除非因为引号转义符导致什么偏差,但这是别的问题了。 看了 https://mywiki.wooledge.org/WordSplitting > 最后送楼主一句话:明知山有虎,…… |
6 Kobayashi 2019 年 6 月 18 日有些地方可能让你造成了误解。 引号的问题: k=("$(printf '\n\n\n')") 中,输出结果被引起来,这样 3 个换行被当做一个字符串,数组大小必然为 1. k="$(printf '\n\n\n')" 中,问题同上,不过这次没加括号,返回的根本不是数组,就是 1 个字符串。 你在不该加引号的地方加入了引号,所以我才觉得你可能不大会用引号。先不提空字符串,这样做根本不可能捕捉到大小为 3 的数组。 最后一句话不是指 Bash,而是指捕捉空字符串这个解决方案本身就棘手,换个思路不用它才是最好的做法。 wooledge 维基我读的是 BashGuide 新手教程。单个知识点的话,可能会解释的更为详尽、繁琐,有时候没必要追究太深。 |
7 adoyle 2019 年 6 月 18 日@Kobayashi 感谢细心指出,引号的问题如你所说,我之后也意识到这个问题,当时脑袋糊涂了,举了这个例子。 捕捉空字符串这个需求是因为我简化了问题导致看起来没意义,实际上我是为了实现一个严格的 split 函数,返回一个数组,就可能会需要返回包含多个空字符串的数组。后来我觉得函数返回数组比较难以实现,就直接去改传入参数了。 BashGuide 还没有读过,因为我之前直接读的 Bash Reference Manual。wooledge wiki 写得非常棒,能够把这些细节深挖到这地步,非常让人佩服。 |
8 james122333 2019 年 7 月 5 日#!/bin/bash k=($(echo "\n" "\n" "\n")) for i in ${k[@]} |
9 james122333 2019 年 7 月 5 日感觉 newline 当空不是个好方法 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。