如何在for循环中设置变量= null?

时间:2015-05-21 11:11:00

标签: for-loop centos elastix

我在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个值。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您的问题是for循环使用command substitution$(...));让我们看看这个简单的例子:

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

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

解决方案是 avoid for loops altogether for parsing command output

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

while read -r line; do 
  myarray[index++]="$line"
done < prueba
printf '%s\n' "${myarray[@]}"
    添加了
  • -r以确保read不会修改输入(不会尝试解释\ - 前缀序列) - 这是一般的好习惯

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

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

答案 1 :(得分:-1)

您可以使用is_null函数。

is_null($a)

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