чтение файла с использованием read -r ведет себя очень странно с MINGW - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть следующий фрагмент, который прекрасно работает в терминальном приложении в 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 оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...