-1

我在 Elastix2.5 (CentOS) 中有这段代码:

for variable in $(while read line; do myarray[ $index]="$line"; index=$(($index+1)); echo "$line"; done < prueba);

这将从“prueba”文件中提取每一行的值。

Prueba 文件内容密码如下:

Admin1234
Hello543
Chicken5444

Dino6759
3434Cars4

Adminis5555

但是,$variable只从有字母的行中获取值,我需要它NULL从空行中获取值。我该怎么做?

4

2 回答 2

0

您的问题是使用for带有命令替换$(...))的循环;让我们看看这个简单的例子:

$ for v in $(echo 'line_1'; echo ''; echo 'line_3'); do echo "$v"; done
line_1
line_3

请注意第二个命令生成的空字符串是如何echo被有效丢弃的。while类似地,循环产生的任何空行都会被丢弃。

解决方案是完全避免for循环解析命令输出

在您的情况下,只需使用循环while来迭代输入文件:

while read -r line; do 
  myarray[index++]="$line"
done < prueba
printf '%s\n' "${myarray[@]}"
  • -r添加以确保read不修改输入(不尝试解释\-prefixed 序列) - 这通常是一种很好的做法。

  • 请注意递增索引是如何直接移动到数组下标 ( index++) 中的。

  • printf '%s\n' "${myarray[@]}"在读取文件后打印所有数组元素,证明也读取了空行。

于 2015-05-24T03:59:53.690 回答
-1

您可以使用 is_null 函数。

is_null($a)

http://php.net/manual/en/function.is-null.php

于 2015-05-21T11:17:11.240 回答