-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

2 番目のコマンドによって生成された空の文字列echoが効果的に破棄されることに注意してください。同様に、whileループによって生成された空の行はすべて破棄されます。

解決策は、コマンド出力を解析するためのループを完全に回避forすることです。

あなたの場合、入力ファイルを反復処理するためのループのみを使用してください。while

while read -r line; do 
  myarray[index++]="$line"
done < prueba
printf '%s\n' "${myarray[@]}"
  • -rreadが入力を変更しないようにするために追加されました(\接頭辞付きのシーケンスを解釈しようとしません) - これは一般的に良い方法です。

  • インデックスのインクリメントが配列添字 ( ) に直接移動されたことに注意してください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 に答える