Need Help for "until" construction


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need Help for "until" construction
# 1  
Old 11-01-2009
Need Help for "until" construction

Hello Unix guru's !!!

I have problem with this simple script:

Code:
#!/bin/bash
clear;
op = 0
until [ $op -ne 2 ]
do
   echo "Select from menu:"
   echo "1. Print Text"
   echo "2. Exit"
   read q

    case $q in
    1) echo "Hello World!!!";;
    2) exit;;
    esac 
done

The result is:

Code:
./file: line 4: [: -ne: unary operator expected
Select from menu:
1. Print Text
2. Exit

How can I get rid of this message "/file: line 4: [: -ne: unary operator expected"?
# 2  
Old 11-01-2009
modify the code to below
Code:
until [ "${op}" -ne 2 ]
do
   echo "Select from menu:"
   echo "1. Print Text"
   echo "2. Exit"
   read q

    case $q in
    1) echo "Hello World!!!";;
    2) exit;;
    esac 
done

# 3  
Old 11-01-2009
It's send me new error:

Code:
#!/bin/bash
until [ "${op}" -ne 2 ]
do
   echo "Select from menu:"
   echo "1. Print Text"
   echo "2. Exit"
   read q

    case $q in
    1) echo "Hello World!!!";;
    2) exit;;
    esac 
done

The result:

Code:
./file: line 2: [: : integer expression expected
Select from menu:
1. Print Text
2. Exit

# 4  
Old 11-01-2009
The problem is in the assignment of "op": you should not use spaces there. Also the condition should be the other way around.
Code:
#!/bin/bash
clear
op=0
until [ $op -eq 2 ]
do
   echo "Select from menu:"
   echo "1. Print Text"
   echo "2. Exit"
   read q

   case $q in
     1) echo "Hello World!!!";;
     2) exit;;
   esac 
done


Last edited by Scrutinizer; 11-01-2009 at 09:26 AM..
# 5  
Old 11-01-2009
until syntax & help...kindly read this.

Code:
until:-
This construct tests for a condition at the top of a loop, and keeps looping as long as that condition is
false (opposite of while loop).
until [ condition-is-true ]
do
command(s)...
done
Note that an until loop tests for the terminating condition at the top of the loop, differing from a
similar construct in some programming languages.
As is the case with for loops, placing the do on the same line as the condition test requires a
semicolon.
until [ condition-is-true ] ; do
Example 10-18. until loop
#!/bin/bash
END_CONDITION=end
until [ "$var1" = "$END_CONDITION" ]
# Tests condition here, at top of loop.
do
echo "Input variable #1 "
echo "($END_CONDITION to exit)"
read var1
echo "variable #1 = $var1"
echo
done
exit 0



---------- Post updated at 04:36 AM ---------- Previous update was at 04:27 AM ----------

Code:
if you understand the above you have to change your script to the below so that the until loop does not terminate:-

#!/bin/bash
clear;
op = 0
until [ $op -ne 0 ]
do
   echo "Select from menu:"
   echo "1. Print Text"
   echo "2. Exit"
   read q

    case $q in
    1) echo "Hello World!!!";;
    2) exit;;
    esac 
done


Last edited by ahmad.diab; 11-01-2009 at 06:35 AM..
# 6  
Old 11-01-2009
That does not seem right. It still contains the wrong assignment statement and it will exit on e.g. value 3. Check my post above.
# 7  
Old 11-01-2009
Quote:
Originally Posted by Scrutinizer
That does not seem right. It still contains the wrong assignment statement and it will exit on e.g. value 3. Check my post above.
Code:
in your post you are using "-eq" but in niki22 post he is using "-ne" ..you have invert the condition ...so it will give you true.

BR

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. UNIX for Advanced & Expert Users

meaning of the construction: ${1+"$@"} ?

Whoud anybody explain the reason to have such construction in code: ${1+"$@"} It is used in the function that replasing functionality of the 'cd' command by processing the 'cd' itself and after that processing some other stuff: chdir() { 'cd' ${1+"$@"} ... #other stuff } I... (4 Replies)
Discussion started by: alex_5161
4 Replies

8. Shell Programming and Scripting

how to use "if not" construction

Hi I am working in ksh and need to turn the following "if" statement into "if not" : if psef op | grep -w fps1 >/dev/null echo fps1 is running. else exit 1 fi I am getting syntax errors no matter what I do, for example : n079$ if ]; then ksh: syntax error: `op' unexpected ... (2 Replies)
Discussion started by: aoussenko
2 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question

Featured Tech Videos