Привет всем форумчанам LOR'а.
Принаписании совершенного обычного скрипта на bash столкнулся с непонятной мне странностью. Пусть скрипт выглядит следующим образом: #!/bin/bash
echo -n «Input floop variable value: »
read hello
export FLOOP=$hello
как видно ничего нетривиального. Просто считываем значение переменной со стандартного ввода и записываем его в переменную FLOOP. Если запустить его в командной строке вот так: $ ./floop.sh то разумеется переменная FLOOP будет экспортирована внутри скрипта, если запустить так: $ . ./floop.sh или $ source ./floop.sh то переменная нормально экспортируется для текущей сессии bash. Здесь все ясно.Но если запустить вот так: $ echo «hello» | source ./floop.sh или $ echo «hello» | . ./floop.sh то никакой переменной в экспорте не будет и «echo $FLOOP» выдаст пустую строку.
Но вот что странно. В zsh последнии две команды работают как надо и переменная FLOOP содержит строку «hello» после их выполнения.
Так в чем же отличие конвеера в bash и zsh? Или я просто что-то не так делаю? Пытался найти ответ в google, но без результатно. Есть идеи?