bash: Segundo separador de campo para um loop WHILE

0

Minha pergunta é semelhante àquela feita aqui:

ligação

Estou procurando fazer um loop FOR em um loop WHILE, mas como você vê quando lê o script

function twokey () {
    taxt=$(echo "$k" | cut -d, -f2)
    keycount=$(echo "$k" | tr ',' ' ' | wc -w)
    echo "$f: There are $keycount keywords."
    for keys in $keycount
    do
        echo "${keys}" 
        echo "Adding keyword $taxt."
        exiv2 --keep -M"add Iptc.Application2.Keywords $taxt" -M"add Xmp.dc.subject $taxt" "$f" 
        ((taxt++))
    done
    exiv2 -g Iptc.Application2.Keywords -Pv "$f" 
}

function dothedeed () {
    echo -e "Adding Keywords to \e[5;42m$f\e[0m." 
    echo -e "$f\t$k" 
    keycount=$(echo "$k" | tr ',' ' ' | wc -w)

    echo "Here's the Keyword string." 
    echo -e "$k" 
    twokey
}

function dav () {
    echo -e "What text file will I be using?" 
    read -er item
    f=$item
    while IFS="^" read -r f k
    do
        echo -e "File is \e[31m$f\e[0m" 
        if [[ ! -f "$f" ]]; then
            echo "I don't see $f in this directory." 
            echo "Moving to next list item." 
            continue
        fi
#        dothedeed
        twokey
    done<"$f" 
}

dav

... ele já define um separador de campo IFS, um quilate, para ler o arquivo de texto ASCII IN. Eu tentei o script como está, mas o "corte" de comando, na linha 21, continua "desembarque"-lo na primeira palavra após a primeira vírgula na seqüência de palavras-chave, que é tudo o que escreve para o arquivo de imagem. Eu não estou certo de mudar isso para um enquanto IFS="," vai me levar mais adiante. Pela minha lógica, deveria.

S Wright

    
por Steve Wright 15.11.2018 / 16:53

0 respostas