Я использую этот скрипт для создания счетчика, и я хочу получить к нему доступ за пределами внутреннего цикла, но мне не повезло. Что мне не хватает?
while [ 1 ]
do
COUNTER=0
ls /tmp/paping* | grep -v pid | while read pap
do
ret=`cat $pap`
if [ "a$ret" == "aTimeout" ]
then
echo "Do something"
else
arr[$COUNTER]=$pap
COUNTER=$(( COUNTER + 1 ))
fi
sleep 0.3
echo $COUNTER
done
#THIS LINE RETURNs 0
echo $COUNTER
done
Как @steeldriver указал мне, когда я подключаюсь, я создаю подоболочку, а значения var не передаются внешнему var.
Как показано в этой ссылке
Решение будет примерно таким:
while [ 1 ]
do
COUNTER=0
while read pap
do
ret=`cat $pap`
if [ "a$ret" == "aTimeout" ]
then
echo "do something"
else
arr[$COUNTER]=$pap
COUNTER=$(( COUNTER + 1 ))
fi
sleep 0.3
echo $COUNTER
done < <( ls /tmp/paping* | grep -v pid)
echo $COUNTER
done
Теперь мой счетчик работает как ожидалось!
Как @steeldriver указал мне, когда я подключаюсь, я создаю подоболочку, а значения var не передаются внешнему var.
Как показано в этой ссылке
Решение будет примерно таким:
while [ 1 ]
do
COUNTER=0
while read pap
do
ret=`cat $pap`
if [ "a$ret" == "aTimeout" ]
then
echo "do something"
else
arr[$COUNTER]=$pap
COUNTER=$(( COUNTER + 1 ))
fi
sleep 0.3
echo $COUNTER
done < <( ls /tmp/paping* | grep -v pid)
echo $COUNTER
done
Теперь мой счетчик работает как ожидалось!
Как @steeldriver указал мне, когда я подключаюсь, я создаю подоболочку, а значения var не передаются внешнему var.
Как показано в этой ссылке
Решение будет примерно таким:
while [ 1 ]
do
COUNTER=0
while read pap
do
ret=`cat $pap`
if [ "a$ret" == "aTimeout" ]
then
echo "do something"
else
arr[$COUNTER]=$pap
COUNTER=$(( COUNTER + 1 ))
fi
sleep 0.3
echo $COUNTER
done < <( ls /tmp/paping* | grep -v pid)
echo $COUNTER
done
Теперь мой счетчик работает как ожидалось!
Предполагая, что ваша оболочка bash, размещение команды shopt -s lastpipe в верхней части вашего скрипта является одним из возможных решений.
Предполагая, что ваша оболочка bash, размещение команды shopt -s lastpipe в верхней части вашего скрипта является одним из возможных решений.
Предполагая, что ваша оболочка bash, размещение команды shopt -s lastpipe в верхней части вашего скрипта является одним из возможных решений.