Comment utiliser la sélection de fichier zenity

Je suis nouveau sur zenity et j’essaye de créer un script simple pour charger un fichier en utilisant zenity --file-selection et la commande wc pour obtenir le nombre de mots de ce fichier. J’ai réussi à créer un formulaire qui peut être utilisé pour parcourir le fichier, mais je ne parviens pas à obtenir de sortie. Pouvez-vous s’il vous plaît me dire où je fais l’erreur?

Mon script actuel est:

 #creates a box if zenity --entry \ --title="Word count" \ --text="Enter file location" \ --entry-text "File path" then #Zenity file selection code for browsing and selecting files FILE=`zenity --file-selection --title="Select a File"` case $? in 0) echo "\"$FILE\" selected.";; 1) echo "No file selected.";; -1) echo "An unexpected error has occurred.";; esac # To show the location in the text box if zenity --entry \ --title="Word count" \ --text="Enter file location" \ --entry-text "$FILE" then #word counting code word_count='wc $FILE' zenity --info --title="Word Counted" --text="Counted words $word_count" fi fi 

Afin de sauvegarder le résultat d’une commande dans une variable, vous devez inclure la commande dans les backtics ( `command` ) ou, mieux, dans $() ( $(command) ). Vous utilisez des guillemets simples, ce qui signifie que vous enregistrez la chaîne wc $FILE et que vous wc $FILE pas réellement wc :

 $ foo='wc /etc/fstab' ## WRONG $ echo $foo wc /etc/fstab $ foo=`wc /etc/fstab` ## RIGHT $ echo $foo 23 96 994 /etc/fstab $ foo=$(wc /etc/fstab) ## RIGHT $ echo $foo 23 96 994 /etc/fstab 

De plus, pour obtenir uniquement les mots et non le nombre de caractères et de lignes, utilisez l’option -w :

 $ foo=$(wc -w /etc/fstab) $ echo $foo 96 /etc/fstab 

Enfin, pour obtenir le numéro seul, sans nom de fichier, vous pouvez utiliser:

 $ foo $(wc -w /etc/fstab | cut -d ' ' -f 1 ) $ echo $foo 96 

Je pense que le code correct peut être ceci:

 #!/bin/bash function count() { word_count=$(wc -w < "$FILE") zenity --info --title="Word Counted" --text="Counted words $word_count" } function choose() { FILE="$(zenity --file-selection --title='Select a File')" case $? in 0) count;; 1) zenity --question \ --title="Word counter" \ --text="No file selected. Do you want to select one?" \ && choose || exit;; -1) echo "An unexpected error has occurred."; exit;; esac } choose