Почему нельзя установить значения в кошке |цикл будет читать после цикла? - PullRequest
0 голосов
/ 14 апреля 2010

Я новичок в сценариях оболочки и написал сценарий для пометки значений в цикле while, но если я пытаюсь получить доступ к этим значениям после цикла, он возвращает нулевые значения. Почему?

#!/bin/sh
cat PLAYARTE_TXT.txt|while read line
do
    count1=$(echo $line|wc -c)
    a=37
    if [[ $count1 -eq  $a ]];
    then
        b=0 
    else
        c=1
        break
    fi
done
if [ "$b" -eq "0" -a "$c" -ne "1" ];
then
    echo success
else
    echo failure
fi
exit 0

1 Ответ

2 голосов
/ 14 апреля 2010

cat является избыточным и является причиной вашей проблемы, потому что "|" труба создает подоболочку. Вот почему, когда вы выходите из цикла while, значение $b теряется. просто перенаправьте файл в цикл чтения

#!/bin/bash
while read -r line
do
 count1=$(echo "$line"|wc -c)
 a=37
 if [ "$count1" -eq  "$a" ];then
   b=0
 else
   c=1
   break
 fi
done  < "PLAYARTE_TXT.txt"
if [[ "$b" = 0 && "$c" != 1 ]];then
 echo success
else
 echo failure
fi
exit 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...