Iniciando um programa com vários arquivos através do problema de expansão do terminal

3

Estou fazendo um programa que inicia o vlc com um conjunto de arquivos salvos em uma variável.

Mas isso não funciona, parece ter um problema com os nomes, o que é estranho (para mim) é que no final o problema é resumido por:

echo $LAUNCHER
#"/home/.../file1.m4a" "/home/.../file2.m4a"

vlc $LAUNCHER
vlc $(echo $LAUNCHER)
#Doesn't work

vlc "/home/.../file1.m4a" "/home/.../file2.m4a"
# Works!!

Então, o que estou fazendo de errado? A propósito, eu preciso das aspas para os arquivos nomeados espaçados

Obrigado.

Veja como eu configurei o LAUNCHER:

Eu tenho uma matriz com as pastas selecionadas que contêm os arquivos que você deseja reproduzir, então eu crio uma matriz de arquivos dessas pastas:

EXTENSION_STRING=".*(m4a|mp3|wma|flac)$"
for i in "${DIR_LIST[@]}"; do
    while ISF= read -r -d $'
echo $LAUNCHER
#"/home/.../file1.m4a" "/home/.../file2.m4a"

vlc $LAUNCHER
vlc $(echo $LAUNCHER)
#Doesn't work

vlc "/home/.../file1.m4a" "/home/.../file2.m4a"
# Works!!
' file; do FILES_LIST+=( "$file" ) done < <(find "$i" -type f -regextype posix-extended -regex "$EXTENSION_STRING" -print0) done
    
por Vndtta 08.01.2013 / 01:42

1 resposta

5

Se você quiser usar uma lista de arquivos com o bash, é muito melhor usar uma matriz, meu palpite é que a vlc esteja tratando a lista de arquivos como um argumento em vez de argumentos separados,

"/ foo / bar" não é o mesmo que "/ foo" "/ bar"

tente isso em vez disso.

LAUNCHER=("/home/foo.mp4" "/home/bar.mp4")

vlc "${LAUNCHER[@]}"

Citando a expansão da matriz, você pode evitar interpretações erradas de nomes de arquivos com nomes espaçados

A outra opção é usar xargs. ajudaria se você explicasse como obter os valores para o LAUNCHER se eu estiver lendo isso corretamente.

    
por strings 08.01.2013 / 02:27