【问题标题】:Bash array- substitue 0 for NULLBash 数组 - 用 0 代替 NULL
【发布时间】:2013-07-12 16:56:23
【问题描述】:

我正在从 bash 中填充一个数组,如下所示:

array[0]=$(awk '/Item/' logfile.log | awk '{print $21}' | awk -F'"' '{ print $2 }')

array[1]=$(awk '/Item/' logfile.log | awk '{print $26}' | awk -F'"' '{ print $2 }')

array[2]=$(awk '/Item/' logfile.log | awk '{print $31}' | awk -F'"' '{ print $2 }')

对于一些我得到一个值作为其他人的数字,没有输出,所以我相信这会用 NULL 填充数组元素。
我想找到包含NULL的数组元素并用“0”填充它们

我尝试了几种不同的方法,但似乎在这里找不到正确的方法。

我尝试过的一件事: if [[ ${array[$i]} ]]; then array[$i]=0;fi

我想我缺少 qoutes 或括号,但似乎无法找到正确的语法。

谢谢

【问题讨论】:

  • NULL 是什么意思? Bash 没有指针。你的意思是一个空字符串?

标签: arrays bash substitution


【解决方案1】:

你只是有条件错误的方式。 [[ something ]] 检查 something 是否为非空。使用[[ -z thing ]] 来检查字符串是否为空:

array[0]="foo"
array[1]=""
array[2]="bar"
for i in {0..2}
do
    if [[ -z ${array[$i]} ]]; then array[$i]=0;fi
done
echo "${array[@]}"

这打印foo 0 bar

【讨论】:

  • 是的,是 -z 成功了。我猜周五脑子放个屁。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-04-13
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
相关资源
最近更新 更多