Sponsored Content
Full Discussion: Error code with if statement
Top Forums UNIX for Beginners Questions & Answers Error code with if statement Post 303026716 by bakunin on Sunday 2nd of December 2018 05:52:11 AM
Old 12-02-2018
First and foremost: i have put some remarks in your posting but you seem to do not read them: Please use CODE-tags when posting code, data or terminal output. How to do it is even written above the editor window when you write a posting, so it can't be that hard, can it? And it is also in the forum rules, which you have agreed to when you registered.

Quote:
Originally Posted by Ibrahims1
i tried and not work
To find out what went wrong i would have to see what you have done, no? You don't go to the doctor and say "it hurts" but you specifically describe where it hurts and in which way and since when. Telling me "doesn't work" is simply not enough: show us the exact command you typed in and the error message it produced, preferably by copying and pasting directly from the screen to here.

Quote:
Originally Posted by Ibrahims1
any advises as well how to debug such code or how to debug in general using vi editor is highly appreciated
You can't debug "using the vi editor" because the editor is built for one thing: editing text. You can start helping yourself with structuring your code, By that i mean specifically indentation. Let conditional statements stand out so that you understand what is going on when immediately - not after searching and second-guessing.

This is your code:

Code:
#!/bin/bash
echo "Enter the name of the file"
read file_name
if [ -f $file_name ]
then
If [ -w $file_name ]
then
echo "add some text to quit ctrld"
cat >> $file_name
else
echo "the file does not have write permission"
fi
else
echo "$file_name does not exist"
fi
~

Now, tell me where the second if-statement ends. You have to actually read everything, line by line, to find that out. Here is how i write it:

Code:
#!/bin/bash

echo "Enter the name of the file"
read file_name
if [ -f $file_name ] ; then
     If [ -w $file_name ] ; then
          echo "add some text to quit ctrld"
          cat >> $file_name
     else
          echo "the file does not have write permission"
     fi
else
     echo "$file_name does not exist"
fi
~

To answer my previous question you just have to go down vertcally because everything that belongs together is aligned. Immediately the corresponding "if", "else" and "fi" stand out because they are indented at the same level. That is not just some idle idea of "arrange it nicer", it really helps understanding code faster and more efficiently. If also helps writing correct code, because if you have something like this:

Code:
if this ; then
     if that ; then
          do_something
     else
          do_something_else
     fi
else
     do_whatever

and you do not end up on column 1 you immediately know that something is amiss - in ths case a missing "fi" on one "if".

Coming back to your question after these rather general remarks: look carefully at the last line of your code:

Code:
~

I don't know if that character is just a copy-and-paste artefact (vi denotes empty lines this way) or if it is really part of your code. If it is then perhaps your shell is confused by it because ~ is not a valid command.

I hope this helps.

bakunin
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Code checking for all values in the same if statement.

I am trying to set up a variable based on the name of the file. function script_name { if then job_name='MONITOR' return job_name; elsif then job_name='VERSION' return job_name fi } for i in `ls *log` do script_name $i done. (4 Replies)
Discussion started by: oracle8
4 Replies

2. Shell Programming and Scripting

Error with if statement..Please help

:b:hi, I have a script as given below: pr_det="1" if then awk ' BEGIN {printf("%23s","session")}' >> report.txt awk ' BEGIN {printf "\n"} ' >> report.txt else awk ' BEGIN {printf("%55s","file_dsc")} ' >> report.txt awk ' BEGIN {printf("%101s","no_recs")} '... (1 Reply)
Discussion started by: jisha
1 Replies

3. Shell Programming and Scripting

Snytax error on If Statement--help

year=`date '+%Y'` month=`date '+%m'` day=`date '+%d'` day=`expr $day - 1` case $month in 1 | 3 | 5 | 7 | 8 | 10 | 12);; if($day =7 ); then $day=6 fi 4 | 6 | 9 | 11);; if ; then $day=31 fi 2);; if ; then if ; then (2 Replies)
Discussion started by: dannyd_y
2 Replies

4. Linux

error in if statement

Hi , I am getting an error when I run the script for checking word "view" in a file . I am using if statement. like this if then VW_VAR=` cat $TN.${ecmdate}.sql1 | grep -i view | awk '{print $3}' | cut -d '.' -f2 ` echo " VW_$VW_VAR " sed -e... (16 Replies)
Discussion started by: capri_drm
16 Replies

5. Shell Programming and Scripting

Error in IF statement

HI i am getting error while executing the given statement for filename in `cat a/file.lst` do if then echo "Exit Code Description :File $filename - is missing in Input Directory" >a.log exit else count1=`awk 'END {print NR}' $filename` echo "$count1">>a.log count2=`awk 'END {print... (4 Replies)
Discussion started by: ravi214u
4 Replies

6. UNIX for Dummies Questions & Answers

error in if statement

Hi, This is my script to catch any oracle errors. In this, the $sqlerr returns ORA-01017: invalid username/password; logon denied when i specify wrong username/password the if condition is failing. how can i resolve the issue. the if statement gives error sqloutput=`sqlplus -s -L... (1 Reply)
Discussion started by: Swapna173
1 Replies

7. UNIX for Dummies Questions & Answers

if statement code syntax

Hi, can someone please tell me what is wrong with this code? I just want it to check if the file size is greater than 2000kb. if Thanks! ---------- Post updated at 09:23 PM ---------- Previous update was at 09:21 PM ---------- I should probably post the full code: #!/bin/sh... (9 Replies)
Discussion started by: Bengel
9 Replies

8. UNIX for Dummies Questions & Answers

How to use a return code in an if statement?

Hi all, After so many tries and searching online for ideas, I had trouble accomplishing this. Is it possible to do something like this in KSH to run an if statement on a return code? Unfortunately the code below fails... Would anyone know how to fix the below attempt? if "$`{pkginfo... (3 Replies)
Discussion started by: chatguy
3 Replies

9. Shell Programming and Scripting

Error in if statement

I am working on script for stale nfs. the file consists of cat data01stale.log - - - - /abcd/backup - - - - /abcd/data Script (16 Replies)
Discussion started by: nareshkumar522
16 Replies

10. UNIX for Dummies Questions & Answers

Does this statement of code mean.....

Good morning, I am 100% mew to Unix and am trying to troubleshoot why a pgm written 3 years ago, suddenly is not working properly. It is part Perl with some UNIX commands thrown in. I need to verify what the UNIX commands are doing before I can continue with my other troubleshooting. print... (7 Replies)
Discussion started by: jaacmmason
7 Replies
All times are GMT -4. The time now is 03:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy