【发布时间】:2014-06-30 19:24:03
【问题描述】:
我有那个 bash 脚本,它将把 git show 的输出读入一个数组。
首先,我使用以下语句创建一个字符串:
git show --quiet --date=rfc --pretty=format:"%s|%b|%an, %ae|%H|%cd" HEAD
这给了我想要的模式:
SUBJECT|BODY|AUTHOR_NAME, AUTHOR_EMAIL|COMMIT_HASH|COMMIT_DATE
我可以确认生成的字符串不在意想不到的地方包含| 字符。
接下来,我想将字符串拆分为 Split string into an array in Bash 中假设的字段:
IFS='|' read -ra FIELDS <<< "$(git show --quiet --date=rfc --pretty=format:"%s|%b|%an, %ae|%H|%cd" $i)"
当我现在查看FIELDS 时,只有前两个元素被填充,而其他元素是空的:
echo ${FIELDS[0]} # prints SUBJECT
echo ${FIELDS[1]} # prints BODY
echo ${FIELDS[2]} # prints nothing
echo ${FIELDS[3]} # prints nothing
echo ${FIELDS[4]} # prints nothing
我做错了什么?为什么最后三个数组元素是空的?
【问题讨论】:
-
你能显示命令的输出吗?就我而言,BODY 条目为空,但多行正文排在最后。
-
@choroba:见下面 l0b0 的答案。问题是
git show用换行符终止了正文,这会破坏数组的创建。
标签: arrays string git bash ifs