Use um array bash como uma lista de argumentos place-in (com o Midnight Commander)

1

Estou com um pouco de dificuldade para descobrir como posso usar uma matriz bash para uma lista de argumentos. Até agora, o código abaixo não funciona .

O %s abaixo é específico do Midnight Commander.

F=(%s); for i in "${F[@]}"; \
             do G+=(--floppy_drive_$((n++))="\"$i\""); \
        done; fs-uae ${G[*]}

O problema é com esta parte:

fs-uae ${G[*]}

No entanto, quando faço eco da última instrução e uso xargs, tudo funciona bem:

Open=FMAX=2; bash -c 'F=(%s); \
       for i in "${F[@]}"; \
          do G+=(--floppy_drive_$((n++))="\"$i\""); \
       done; echo ${G[*]}' | xargs -n $((FMAX*2)) fs-uae

Também parece que eu tenho que usar bash -c porque o MC reclama de erros de sintaxe.

Eu também uso isso com MESS, já que o emulador de mensagens precisa de argumentos como -cart1 , -cart2 , -flop1 , etc ....

Portanto, o código acima funciona . Eu posso selecionar dois arquivos com a tecla Insert no Midnight Commander, e apertar enter, e o fs-uae iniciará com os disquetes que eu selecionei. Eu só estou querendo saber se há uma maneira melhor de fazer isso sem xargs?

Eu ouvi pessoas dizerem que xargs é "inseguro". Quão preocupante isso é tecnicamente?

    
por mrrhq 30.04.2016 / 10:47

0 respostas