Problem with if statement, cannot get to right directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with if statement, cannot get to right directory
# 8  
Old 03-09-2017
I will try
Script call:
Code:
 ${LOCL_WORKING_DIR}/sftp_ondemand.sh /export/data/mbsesb/config/ondemand.cfg /export/data/mbsesb/config/filename.lst W

inside the script
Code:
 case ${3} in
        D)
                cd ${COOLDIR}/cool_${Today}/daily
                ;;
        W)
                cd ${COOLDIR}/cool_${Today}/weekly
                ;;
        M)
                cd ${COOLDIR}/cool_${Today}/monthly
                ;;
esac
echo "CASENAME == ${CASENAME}"
PWD=`pwd`
echo "PWD == $PWD"
if [ -d "${COOLDIR}/cool_${Today}/daily" ] && [ "${CASENAME}" = "D" ]
then
     for file in *_${Today}*.csv *_${Today}*.txt
do
 echo "Start woprking with ${file} to prepare rename them to Ondemand format"
        firstpreffix=`echo ${file} | cut -d'_' -f 1`
        ext=`echo $file | rev | cut -d'.' -f 1 | rev`
        echo "firstpreffix $firstpreffix"
        echo "EXT = $ext"
echo "end of for loop"
 done
 exec ${LOCL_WORKING_DIR}/brkvol_day_sftp_ondemand.sh
 fi
 if [ -d "${COOLDIR}/cool_${Today}/weekly" ] && [ "${CASENAME}" = "W" ];then
for file in *_${Today}*.csv
do
        echo "Start woprking with ${file} to prepare rename them to Ondemand format"
        filename=`echo "${file}" | awk -F'_' '{for (i=1; i<NF; i++) printf("%s_", $i)}'`
        echo "filename $filename"
done
 fi
 if [ -d "${COOLDIR}/cool_${Today}/monthly" ] && [ "${CASENAME}" = "M" ];then
 for file in *.${Today}*.csv *.${Today}*.txt
do
        echo "Start woprking with ${file} to prepare rename them to Ondemand format"
        filename=`echo $file | cut -d'.' -f 1`
echo "filename = ${filename}"
        ext=`echo $file | rev | cut -d'.' -f 1 | rev`
done
 fi

It prints
Code:
 echo "CASENAME == W}"
PWD=`pwd`
echo "PWD == /xxxx/xxxx/xxxx/xxxx/weekly"
Start woprking with *.20170309*.csv to prepare rename them to Ondemand format
 firstpreffix = *.20170309.csv
 ext = csv
 end of for loop

When I expect it to go to the second if
Code:
 Start working with 21688-1_UsrAccChgRpt_20170309.csv to prepare rename them to Ondemand format
 filename 21688-1_UsrAccChgRpt_

No error messages.
Now is better?

---------- Post updated at 05:36 PM ---------- Previous update was at 05:33 PM ----------

I did it, doesn't show an error or mistake. I print
Code:
 CASENAME = W

# 9  
Old 03-09-2017
that's really "nice and informative" seeing more of your code, but it's not really helpful (at least to me).
Have you tried to follow the previously mention suggestion of adding set -x to the script and following the execution?
I'm not sure how *I* can help if I can keep seeing more code.....
# 10  
Old 03-09-2017
I did it, nothing is working
# 11  
Old 03-09-2017
Quote:
Originally Posted by digioleg54
I did it, nothing is working
thanks for sharing - this is very "informative".
Care to show the output of set -x "not working"?
# 12  
Old 03-09-2017
Quote:
Originally Posted by digioleg54
I just explained you:
I have three if statement with and condition:
Code:
 if [ -d "${COOLDIR}/cool_${Today}/daily" ] && [ "${CASENAME}" = "D" ]
 then
       echo "Daily dir"
 fi
 if [ -d "${COOLDIR}/cool_${Today}/daily" ] && [ "${CASENAME}" = "W" ]
 then
      echo "weekly dir"
 fi
 if [ -d "${COOLDIR}/cool_${Today}/daily" ] && [ "${CASENAME}" = "M" ]
 then
      echo "monthly dir"
 fi

It is brief. It doesn't matter, what it does inside.
Everything I want,
Code:
 if CASENAme = "W", print weekly dir
 But it prints daily dir

---------- Post updated at 05:19 PM ---------- Previous update was at 05:10 PM ----------

The script inside each if statement has 1000 lines, shows no errors. It just goes to incorrect if, even directory doesn't exist and I supply CASENAME "W", it goes under first IF
You can tell us the code doesn't matter all you want to. But we don't believe you. All three of your if statements above test whether or not the daily directory is there. Earlier posts had your three if statements testing different directories (but, usually not testing three different directories). The code above will print no more than one of Daily dir, weekly dir, or monthly dir. It will NEVER print daily dir (with a lower case leading d).

And there is a HUGE difference between CASENAme, $CASENAme, $CASENAME, $CaseName, and any other differences in upper and lower case letters in strings and (when there is a leading $, variable names).

Every time you give us an excerpt of your code, little details change. Those little details greatly affects the way your code works, and every typo greatly affects our ability to guess at what is wrong.

I would have to assume that one or more of the typos that we see in the excerpts you have posted here are indicative of mistakes in your thousands of lines of code and that one or more of those mistakes is what is causing your problem. A missing $ when you intended to perform a variable expansion; a misspelled variable name; using daily, or weekly, or monthly when you intended to use one of the others; et cetera can all cause the problems you have described and are consistent with discrepancies between what you say is code that you are running and output that you say is being produced by that code.

It has been suggested several times that you trace your code while it is running with set -x (which is a great idea). If you would do that and show us (accurately) the code you are running and the output produced (accurately), we might be able to help you.

With the inconsistencies between the code segments you have shown us and the output you say those code segments produce, I don't see much hope of anyone being able to diagnose your problem. I wish you luck, but I don't see any way that I can help you further on this topic.
These 3 Users Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with If statement

Hi All, I am writing an if statement to check multiple conditions, but when I try to execute the script it is breaking at the point of if statement by showing the issue below. Code I am using is given below. if -a ] then .... else ... fi I am not understanding... (3 Replies)
Discussion started by: ginrkf
3 Replies

2. Shell Programming and Scripting

Problem if statement

echo "Enter the variable: " " read var1 echo " " for i in ib eb atm do if ; then mv properties environment.properties break else echo "No changes to $var1 " fi done When i run and enter the eb it's not working.Any suggestions please.. (7 Replies)
Discussion started by: bhas85
7 Replies

3. UNIX for Dummies Questions & Answers

Having problem with if statement

Could someone help me out with this if statement? It's supposed to get a person's website, but it isn't working when I run it. website="" echo "Would you like to enter a website? Enter Yes/No" read choice if then while do echo "Please enter a website:"; read... (4 Replies)
Discussion started by: Sotau
4 Replies

4. Shell Programming and Scripting

problem with if/while statement

I'm trying to have the script check if a file has data or not, and then process it accordingly. If the file is empty, I want it to return "nothing to do", if not, I want it to process the file line by line. This is what I have so far, but it always returns "nothing to do", even if the file is not... (4 Replies)
Discussion started by: ddrew78
4 Replies

5. Shell Programming and Scripting

if statement problem

Hi I have a bash script like this if then echo "A" else echo "B" fi $1 is something like 02350 (there is always a trailing '0') and I would like to have an if based on the value of the digits after the 0. Can anybody help? Thanks, Sarah (3 Replies)
Discussion started by: f_o_555
3 Replies

6. UNIX for Dummies Questions & Answers

if statement problem

See https://www.unix.com/shell-programming-scripting/96846-if-statement-problem.html (0 Replies)
Discussion started by: f_o_555
0 Replies

7. Shell Programming and Scripting

If Statement Problem..

The problem I am having here is that only the 1st option is executed, no matter if I pick yes or no. What am I doing wrong? How can I get this working right without resorting to a case statement? echo "This is the max size your lvol can be:" echo $MAXSIZE echo echo Do you want to max out... (2 Replies)
Discussion started by: LinuxRacr
2 Replies

8. UNIX for Dummies Questions & Answers

if statement problem

hi all. i just have a very small problem. i have a menu of 7 choices. i want an if statement so that if the user chooses anything except inside the 1 to 7 range, i can handle the error for it. i tried this: if ] then ....... fi (but it dont work) ...any suggestions? ... (4 Replies)
Discussion started by: djt0506
4 Replies

9. Shell Programming and Scripting

problem with an IF statement

I need an IF statement that will compare the contents of the variable CX with the actual string "CP". ie. If the contents of $CX are NOT equal to the actual string "CP" then blah blah blah. I have tried a number of things including the following....... if ]; then if ]; then if ];... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

10. UNIX for Dummies Questions & Answers

if statement problem

I keep getting an error at line 21, it doesn't like my if statement. Previously I have tried using (( )), but still get errors. The current error is that server_busy is not found. This is the script: #! /bin/ksh server_busy="na" for file in $1 $2 $3 $4 $5 $6 do echo " ${file}\t\c" ... (1 Reply)
Discussion started by: coughlin74
1 Replies
Login or Register to Ask a Question