How to use zenity file selection
Solution 1
In order to save the output of a command in a variable, you must enclose the command in backtics (`command`
) or, better, in $()
($(command)
). You are using single quotes which means that you are saving the string wc $FILE
and not actually running 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
In addition, in order to get only the words and not the number of characters and lines, use the -w
option:
$ foo=$(wc -w /etc/fstab)
$ echo $foo
96 /etc/fstab
Finally, to get the number alone, with no file name, you can use:
$ foo $(wc -w /etc/fstab | cut -d ' ' -f 1 )
$ echo $foo
96
Solution 2
I think that the correct code may be this:
#!/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
Related videos on Youtube
![Eka](https://i.stack.imgur.com/F8mcb.jpg?s=256&g=1)
Eka
Updated on September 18, 2022Comments
-
Eka almost 2 years
I am new to
zenity
and I am trying to make a simple script for loading a file usingzenity --file-selection
and thewc
command to get the word count of that file. I have successfully made a form which can be used to browse the file but I am unable to get any output. Can you please tell me where I am making the mistake?My current script is:
#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
-
muru over 9 yearsHow is it that you ran
FILE=`zenity ...
, yetwordcount='wc..
? -
Eka over 9 years@muru i just copy pasted that code from a website and modified according to my script :)
-
user3728501 about 5 yearscase -1 is never reached as a return code cannot be negative
-
-
Eka over 9 yearsHey thanks for solving this problem..i was stuck in this error for some time. Can i ask one more question. how can i add an additional button to my form
-
terdon over 9 years@Eka I don't know zenity but in any case, please ask new questions by posting a new Question.
-
terdon over 9 years@Eka my last example shows how to get the number of words alone. If you want all the info just without the filename, the simplest is to pass it to
wc
as an input stream instead of a file name:wc < "$FILE"
-
Ismael Miguel over 9 years
FILE="$(zenity --file-selection --title="Select a File")"
I think this is a syntax error.