このスクリプトは、cvsリストを3つの列に分割します。 "名前"の列に注目しています。私は最も多くの文字を持っている名前を発見したい。ほとんどの文字を持つ名前が見つかると、その文字を変数に代入します。英語で - -Bash - 整数リストからMAX値を取得
#!/bin/bash
for i in $(cat homeaway.txt)
do
echo $i | while IFS=, read -r area name host
do
maxLength=0
length=${#name}
if [ $length -gt $maxLength ] ; then
maxLength=$length
else
:
fi
printf "%s\n" $maxLength
done
done
スクリプトは述べています長さがない場合、MAXLENGTH、maxLengthのに設定された長さよりも大きい場合は、何もしません。これでほとんどの文字と エリアの文字列は、スクリプトがすべての文字を通じて読み取ると26を持っている「script_name_12345678999999」でスクリプトが26文字で面積値に達すると、$ maxLengthのは26
__DATA__
HOME,script_name_12345,USAhost.com
AWAY,script_name_123,USAhost.com
HOME,script_name_1,EUROhost.com
AWAY,script_name_123,USAhost.com
HOME,script_name_123456,EUROhost.com
AWAY,script_name_12345678999999,USAhost.com
HOME,script_name_1234,USAhost.com
AWAY,script_name_1234578,USAhost.com
HOME,script_name_12,EUROhost.com
AWAY,script_name_123456789,USAhost.com
を返す必要があります$ maxLengthに何かを割り当てるのを止めるべきです。 代わりに、それは、各文字列の長さのリストを返す、と私はあなたのループは(専門用語)ビットグラグラしていて、の繰り返し毎にゼロにmaxLength
をリセットする方法ゼロがここ
[email protected] $ ./length_test.sh
17
0 ### how does the zero get in here ?
15
13
15
18
26 ###script_name_12345678999999
16
19
14
21
ループごとに 'maxLength = 0'? –
ループ内のすべての反復で、maxLengthをゼロにすることは意図していません。私はちょうどそれを初期化していると思った。 – capser