Sponsored Content
Top Forums Shell Programming and Scripting if then else; no variable match but statement executes anyway. Post 302707365 by Don Cragun on Friday 28th of September 2012 11:53:47 AM
Old 09-28-2012
The first if command in your example does exactly what you want when I try it. (I use ksh; you haven't said what shell you're using.) In other words, it does not print 2012 because "12-31-12" is not "09-28-12".) It should work with any shell that supports the basic tenets of the shell command language defined by the the original Bourne shell. (This includes at least bash, ksh, and sh.)

The test statements in the rest of your if commands all evaluate to true because the strings "09-28-12==12-31-12" and "09-28-12=12-31-12" are not empty strings. In these cases == and = are just parts of a string; they are not comparison operators.

Assuming you are using bash, ksh, sh or a similar shell (NOT csh nor tcsh), you should get what you seem to want if you change: "$date"=="$date1" to "$date" == "$date1", $date==$date1 to $date == $date1, and $date=$date1 to $date = $date1, respectively.

You may note that the standards specify = as the operator to compare strings for equality, but I don't know of any POSIX-conforming shell that doesn't also recognize == (and most shell maintainers prefer == and consider = obsolete).
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

if statement to match *

Hi I have a script like read i if then echo bingo fi I want to enter the if block if i is equal to * The same doesn't happen , when I input * the script fails with error "[: too many arguments" I know it is very basic , but still Could any one help me out with the issue ... (3 Replies)
Discussion started by: sivasenthil_k
3 Replies

2. UNIX for Dummies Questions & Answers

Regex in if-then-else statement to match strings

hello I want to do a pattern match for string in the if statement, but I am not sure how to use regex inside the if statement. I am looking for something like this: if {2,3} ]; then ..... .... ... fi (7 Replies)
Discussion started by: rakeshou
7 Replies

3. Shell Programming and Scripting

How to match the last XML extension by using Case statement

Hi All, I have a status.txt file which contains following three files. 1.xml 2.xml 3.xml Now i have written a shell script 1.sh which contains the following cat status.txt | while read filename do echo $filename case "$filename" in xml) echo "running 1.xml" ;; ... (3 Replies)
Discussion started by: sunitachoudhury
3 Replies

4. Shell Programming and Scripting

Using variable in case statement

I want to do this: Ex 1: case $answer in 1|2|3|4|5) echo $answer;; x) break;; *) echo "Invalid selection. Try again.";; esac But I need the part "1|2|3|4|5" to be fetched from a variable, like so: Ex 2: case $answer in $cases) echo $answer;; x) break;; *) echo "Invalid... (2 Replies)
Discussion started by: fialia
2 Replies

5. Shell Programming and Scripting

Select variable within a if statement

i want to select a variable created and use it in a if statement, but not getting the desired results LINE='device for 0101a01: lpd://172.25.41.111:515' prt=`echo $LINE | awk '{print $3 }' | cut -c 1-7` echo $prt My if statement to select just what i want.. IFS=$":" while read prt... (11 Replies)
Discussion started by: ggoliath
11 Replies

6. Shell Programming and Scripting

awk pattern match and search in single statement

Hi All, I am trying to alter all lines between EXEC SQL and END-EXEC that have an INCLUDE in them. The following code search="INCLUDE " cp -f ${WORK}/$file.in ${WORK}/$file.wrk2 for item in `echo $search `; do > ${WORK}/$file.wrk1 awk -vITEM="$item" '{ if ( $0... (3 Replies)
Discussion started by: Bruble
3 Replies

7. Shell Programming and Scripting

trying to find match from multiple string if statement

I'm trying to create what (should be) a simple bash script that will pull computer name and use that info to bind to one of three servers. Is there any way to do this without having a text file with the names of the servers and associated computer names? (5 Replies)
Discussion started by: jacobsbigbro1
5 Replies

8. Shell Programming and Scripting

script to match statement from a file

All, I am trying to write a script which will match the statement from one log file and then proceed for other commands mention in the script. for my application, backup is schedule to run every day at particular time and creats a log file "/var/adm/backuplog". if backup completes then... (2 Replies)
Discussion started by: anshu ranjan
2 Replies

9. Shell Programming and Scripting

Variable on If Statement

Hi, I am tasked to modify soem script and I come accross a line which I dont fully understand. I tried searching online but I couldnt get a good explanation on it. Here it the part of the code: PAY_RT=`cat $TEMPFILE | cut -f2 -d","` if ; then PAY_RT=R fi What is... (3 Replies)
Discussion started by: The One
3 Replies

10. Shell Programming and Scripting

Variable IF statement in awk

I have multiple requirements to run data extracts (with the same basic requriement / resulsts) however the parameters of the extracts change with each request. To help make life easier I am writing a script where the parameters for the specific request are set at the start and then used as needed.... (6 Replies)
Discussion started by: meike
6 Replies
true(1) 						      General Commands Manual							   true(1)

NAME
true, false - Returns a standard exit value SYNOPSIS
true false STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: true: XCU5.0 false: XCU5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. DESCRIPTION
The true command returns a 0 (zero) exit value. The false command returns a nonzero exit value. These commands are usually used in input to shell commands. NOTES
The special built-in utility : (colon) is sometimes more efficient than the true command. EXIT STATUS
[Tru64 UNIX] The nonzero value returned by the false command may vary from system to system. EXAMPLES
To construct a loop in a shell procedure, enter: while true do date sleep 60 done This procedure displays the date and time once a minute. To stop it, press the Interrupt key sequence. SEE ALSO
Commands: csh(1), ksh(1), Bourne Shell sh(1b), POSIX shell sh(1p) Standards: standards(5) true(1)
All times are GMT -4. The time now is 03:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy