2 votes

Tableau de Bash comme argument à l'intérieur de l'écran

Le code ci-dessous ne fonctionne pas comme je l'espère. C'est peut-être parce que je m'y prends mal, mais je pense qu'il s'agit d'un problème de citation.

    #!/bin/bash 

    IFS=$'\n' 
    fortune_lines=($(fortune | fold -w 30))
    Screen_Session=$(mainscreen)
    Screen_OneLiner=$(screen -p 0 -S ${Screen_Session} -X stuff "`printf "say   ${fortune_lines[@]}\r"`")

    for var in "${Screen_OneLiner[@]}"
      do
        echo "${var}"
    done

Je pense que je ne cite pas quelque chose correctement parce que lorsque j'essaie d'exécuter ceci. J'obtiens

    line 5: mainscreen: command not found
    [screen is terminating

Essentiellement, j'essaie d'ajouter cette fonction (qui fonctionne)

    IFS=$'\n' 
    fortune_lines=($(fortune | fold -w 30))

A cet écran, une seule ligne

   screen -p 0 -S ${Screen_Session} -X stuff "`printf "say   ${fortune_lines[@]}\r"`"

Ensuite, faites-lui boucler le tableau

    for var in "${ArrayName[@]}"
   do
      echo "${var}"

   done

Je ne suis donc pas sûr de la distance qui me sépare (dans le code) de ce que j'essaie de faire. Toute aide serait la bienvenue.

0voto

doubleDown Points 3245

Cette ligne est problématique

Screen_Session=$(mainscreen)

Vous utilisez la substitution de commande ici, donc si mainscreen n'est pas une commande valide, vous obtiendrez command not found erreur.

Vous voulez peut-être utiliser des accolades au lieu de parenthèses ?

0voto

Armali Points 1170

Puisque les demandes de fonctionnalités à marquer un commentaire comme une réponse restent refusés, je copie ici la solution ci-dessus.

J'ai réussi à faire fonctionner ceci... gist.github.com/4006586 - utilisateur1787331

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X