Definir argumentos de um arquivo de texto não funciona

0

Aqui está o meu código.

  #!/bin/bash

  set -- $(cat /home/jeevan/tempzen1.txt)
  zenity "$@"

arquivo tempzen1.txt contém: --list --title FILE-SELECTOR - coluna serialno. --column file --width 1000 --height 600 --riolista TRUE "/ home / jeevan / very very latest"

Por que o código acima não funciona quando o abaixo funciona? Eu simplesmente escrevi set args dentro do meu script e iniciei o zenity de dentro do mesmo script, então funciona, mas por que não de outro arquivo de texto?

este é o meu código de trabalho:

#!/bin/bash
set -- --list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"
zenity "$@"
    
por jeevanreddymandali 14.07.2015 / 12:58

1 resposta

2

Este é exatamente o mesmo problema da sua pergunta anterior - o parâmetro $@ contém apenas um argumento, a saber --list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest" (sim, a parte inteira é um argumento incluindo espaços, citações etc.), enquanto você quer dividi-lo e passar vários argumentos.

E novamente a solução é eval uate o comando:

set -- "$(cat /home/jeevan/tempzen1.txt)"
eval zenity "$@"

ou melhor ainda diretamente:

eval zenity "$(cat /home/jeevan/tempzen1.txt)"
    
por 14.07.2015 / 13:10