У меня есть следующий фрагмент, который прекрасно работает в терминальном приложении в Ubuntu, но тот же код ведет себя странно в MINGW (оболочка, которую git bash использует в windows).
while true;
do
while IFS=, read -r x owner login_name
do
echo "$x $owner $login_name" # putting this makes it work on MINGW
getVisitors "$x" "$owner" "$login_name"
done<"${machines}"
done
function join_by { local IFS="$1"; shift; echo "$*"; }
function getVisitors
{
machine="$1"
team="$2"
user="$3"
echo "Running ${cmd} on ${machine}"
result=$(ssh -q -i "${key_file}" -o ConnectTimeout=1 -o BatchMode=yes -o StrictHostKeyChecking=no -t ${user}@${machine} ${cmd})
isMachineUp=$?
ips=()
for visitor in ${result}
do
shopt -s nocasematch
if [[ ! "$visitor" =~ $myHostName.* ]];then
ips+=("${visitor}")
fi
shopt -u nocasematch
done
if [[ $isMachineUp -ne 0 ]];then
ips=("-");
else
if [[ $ips == "" ]];then
ips="-";
fi
fi
echo "Users found on $machine === > $ips"
addMachine $(join_by , "${ips}") "${machine}" "${team}"
}
Приведенный выше код должен продолжать цикл навсегда и анализировать файл "$ {machines}" построчно, который представляет собой CSV-файл, подобный приведенному ниже.
foo,-,admin
bar,-,admin
dor,-,admin
Однако фрагмент кода просто анализирует первую строку в MINGW
оболочке.