На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random, Модераторы разделов
-
dergachev
- Сообщения: 847
- ОС: archlinux
Сообщение
dergachev »
Вот такой код:
Код: Выделить всё
#!/bin/sh
a=0
echo "test test test" | while read line; do
echo "$line"
a=1
done
echo $a
Выводит:
Могу ли я вообще назначить
a изнутри такого while?
-
Brainsburn
- Сообщения: 950
- Статус: /
- ОС: Gentoo
Сообщение
Brainsburn »
dergachev писал(а): ↑20.04.2013 10:17
Могу ли я вообще назначить
a изнутри такого while?
Нет. Говоря простым языком, эта часть скрипта выполняется отдельным интерпретатором.
-
Brainsburn
- Сообщения: 950
- Статус: /
- ОС: Gentoo
Сообщение
Brainsburn »
Попробуйте такой код:
Код: Выделить всё
#!/bin/bash
a=0
while read line
do
echo "$line"
a=1
done < <(echo "one two three")
echo $a
$ ./test.sh
one two tree
1
В первой строке должен быть именно bash, а не sh. Погуглить можно bash process subustitution.
-
Bizdelnick
- Модератор
- Сообщения: 21432
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Сообщение
Bizdelnick »
Только если избавитесь от конвейера.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще | в течение (часа)
новичок
нюанс
по умолчанию | приемлемо
проблема
пробовать
трафик |
-
dergachev
- Сообщения: 847
- ОС: archlinux
Сообщение
dergachev »
Воо, спасибо, всё понял :)
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Сообщение
/dev/random »
Немного опоздал, но в bash есть опция lastpipe, позволяющая выполнять последнюю часть пайпа в основном интерпретаторе, а не в сабшелле.