Link to home
Start Free TrialLog in
Avatar of prestonhill
prestonhill

asked on

Need Part of a Bash Script take input/generate array of menu choices/take user selection/appoint value...

I have inherited a task to complete a deployment script -

It needs to query the user for a string in order to narrow down the choices of directories that were ftp or scp up to the server.

Based on the user input a partial directory list is returned of a local directory with the matching string request - this partial (or say full return if a very broad search (like just the letter a for example) needs to return to the user as input choices - aka like

1 - directory1
2 - directory2
3 - directory3

the array choices also need to be able to handle spaces and linux allowable special characters in the name


Avatar of letharion
letharion
Flag of Sweden image

Avatar of Morne Lategan
You can use the dialog utility if its available on your system. Most system's come pre-installed with it, but you can install it if its not already there. An alternative would be whiptail which is more lightweight.

Lets say the directories are in /home/upload. That is:

/home/upload/dir1
/home/upload/dir2

etc

Here's a code snippet from the dialog utility program's examples
#!/bin/sh
exec 3>&1
FILE=`dialog --title "Please choose a directory" --dselect /home/upload/ 14 48 2>&1 1>
&3`
code=$?
exec 3>&-
 
case $code in
  0)
    echo "\"$FILE\" chosen";;
  1)
    echo "Button 1 (Cancel) pressed";;
  2)
    echo "Button 2 (Help) pressed";;
  3)
    echo "Button 3 (Extra) pressed";;
  255)
    echo "Box closed.";;
esac

Open in new window

Avatar of prestonhill
prestonhill

ASKER

I was starting down the dialogue path - I need to get it installed on the RedHat system this script needs to run on though (not available but should not be a problem) - I am going to check out whiptail - I haven't looked at it before.
ASKER CERTIFIED SOLUTION
Avatar of Morne Lategan
Morne Lategan
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks uberpappa - that was enough of a bit of code to get me going on what I needed.