3
对不起,对subject clone,但鉴于我从这个答案成功使用的技术不能按预期在新脚本上工作,我认为是时候提出一个新问题。如何给bash数组添加值?
不管怎样,下面的脚本是相当直截了当:
missed_symbols=()
grep missed ${dest}/scribe.log | while read -r line; do
symbol=$(echo "${line}" | cut -d' ' -f1)
missed_symbols+=("$symbol")
done
grep missed ${dest}/scribe_close.log | while read -r line; do
symbol=$(echo "${line}" | cut -d' ' -f1)
missed_symbols+=("$symbol")
done
for symbol in "${missed_symbols[@]}"; do
echo "Scribe missed a turn in ${symbol}"
done
echo "Scribe missed ${#missed_symbols[@]} turns today"
exit 0
并添加-x
到#!/bin/bash
行告诉我说,的确,它是从$missed_symbols[@]
分配每个$line
的第一个字到$symbol
。然而,当我检查${#missed_symbols[@]}
时,我得到零。当然,循环它不会产生输出。
那么,我的错字在哪里?
见[BashFAQ#24](http://mywiki.wooledge.org/BashFAQ/024)。 –
提示:[shellcheck](http://www.shellcheck.net)自动识别许多常见问题[如此](https://github.com/koalaman/shellcheck/wiki/SC2031) –
顺便说一句 - 使用'cut '在这里是不好的形式;我真的应该在早先的答案中纠正这一点,而不是保留它。参见[BashFAQ#100](http://mywiki.wooledge.org/BashFAQ/100),了解bash中字符串操作的良好实践的一般性讨论,或[参数扩展的bash-hackers页面](http:// wiki.bash-hackers.org/syntax/pe)深入讨论我更新的答案现在使用的具体方法。 –