Visit The New, Modern Unix Linux Community


Help Needed with File Checker Korn Shell Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help Needed with File Checker Korn Shell Script
# 1  
Help Needed with File Checker Korn Shell Script

I am attempting to write a korn shell script that does the following, but I am getting errors. I'm new to korn shell scripting and am not sure what I am doing wrong. Please help with example scripts. Thanks.

1) check for day of the week
2) if day of the week is Monday then check for the existence of three files
3) if all three files are not found then loop infinitely until all three are found
4) when found then execute a .sas program
5) else if the day if the week is not Monday then check for the existence of two files
6) if the two files are not found then loop infinitely until both files are found
7) when both files are found execute a .sas program

Here's what I have thus far:

Code:
#!/usr/bin/ksh
. ~/.profile

DAYOFWEEK=$(date +"%u")
echo DAYOFWEEK: $DAYOFWEEK

if ["$DAYOFWEEK" == 1];
then do
        if [-f /files/are/here/FILE1.txt
            -f /files/are/here/FILE2.txt
            -f /files/are/here/FILE3.txt]; then
sas /files/are/here/process.sas
sleep 10

else if ["$DAYOFWEEK" !==1];
then do
          if [-f /files/are/here/FILE2.txt
              -f /files/are/here/FILE3.txt]; then
sas /files/are/here/process.sas
sleep 10
done

Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 01-09-2020 at 12:56 PM.. Reason: code tags, please!
# 2  
Welcome to the forums!
A number of things is wrong (to start with):
1. a logical construct [ logical ] should have trailing/leading spaces, e.g.: if [ "$DAYOFWEEK" == 1 ]
2. numerical comparison within the [] should be done with -eq/-ge/-le/etc..., eg: if [ "$DAYOFWEEK" -eq 1 ]
3. the grouping of the logicals within the if, should be done as follows, e.g. if [ logical1 ] && [ logical2 ]
4. you're missing a 'closing' fi for your leading if - I bet your trailing doneshould be an fi
# 3  
On top of vgersh99's comments to your syntax, you also might want to consider a slightly different approach to the logics, which translates to


- if FILE2 and FILE3 exist, and
...- the weekday is not Monday
...- weekday is Monday and FILE1 exists

, execute the sas program.

How about
Code:
if [ -f ./file2 -a  -f ./file3 -a \( -f ./file1 -o $DAYOFWEEK -ne 1 \) ]  
  then  sas 1 /files/are/here/process.sas
fi

Be aware that the -a and -o operators are deprecated and should be replaced by && and || (but I'm not sure how to do the parentheses grouping).
# 4  
Hi.

You can find some of your errors by using shellcheck:
Code:
In <yourfile> line 7:
if ["$DAYOFWEEK" == 1];
^-- SC1009: The mentioned parser error was in this if expression.
   ^-- SC1073: Couldn't parse this test expression.
    ^-- SC1035: You need spaces after the opening [ and before the closing ].
                      ^-- SC1020: You need a space before the ].
                      ^-- SC1072: Unexpected ";". Fix any mentioned problems and try again.

It will be an iterative process to avoid cascades of error messages.

Some details for shellcheck:
Code:
shellcheck      analyse shell scripts (man)
Path    : /usr/bin/shellcheck
Version : 0.3.4
Type    : ELF 64-bit LSB executable, x86-64, version 1 (SYS ...)
Help    : probably available with -h
Repo    : Debian 8.11 (jessie) 
Home    : http://hackage.haskell.org/package/ShellCheck (pm)

Best wishes ... cheers, drl
# 5  
Quote:
Originally Posted by RudiC
On top of vgersh99's comments to your syntax, you also might want to consider a slightly different approach to the logics, which translates to


- if FILE2 and FILE3 exist, and
...- the weekday is not Monday
...- weekday is Monday and FILE1 exists

, execute the sas program.

How about
Code:
if [ -f ./file2 -a  -f ./file3 -a \( -f ./file1 -o $DAYOFWEEK -ne 1 \) ]  
  then  sas 1 /files/are/here/process.sas
fi

Be aware that the -a and -o operators are deprecated and should be replaced by && and || (but I'm not sure how to do the parentheses grouping).
Can be done as a { } group. (Note: there must be a semicolon or newline before the closing brace! And of cause spaces next to the [ ] { } )
Code:
if [ -f ./file2 ] && [  -f ./file3 ] && { [ -f ./file1 ] || [ $DAYOFWEEK -ne 1  ]; }
  then  sas 1 /files/are/here/process.sas
fi

These 4 Users Gave Thanks to MadeInGermany For This Post:

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #820
Difficulty: Easy
Before CSS, nearly all presentational attributes of HTML documents were contained within the HTML markup.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Validate file count in korn shell script

Hi, I have files in the directory like below which I need to validate if all the required files are present. A_B_001 of 002_time1.txt A_B_002 of 002_time1.txt A_B_001 of 001_time2.txt Scenarios- a)If file with 001 of 002_time1 or 002 of 002_time1 is missing in the folder,script should... (6 Replies)
Discussion started by: aneeta13
6 Replies

2. Shell Programming and Scripting

Help needed in Korn Shell scripting

#! /bin/ksh while read line do if ] ; then echo "no data" continue; fi echo "performing operation on $line" done < prg.txt (3 Replies)
Discussion started by: Juhi Kashyap
3 Replies

3. Shell Programming and Scripting

Write output to a file using Korn shell script

All, Can anyone please help me with the below scenario in korn shell script. Can anyone please give me some hints to proceed on this. I have a Flat file of the below format. Input file format:... (1 Reply)
Discussion started by: sp999
1 Replies

4. Shell Programming and Scripting

Monitor file generation for an hour using Korn shell script

Hi, I am new to this unix scripting, I got a requirement like.. Files with *.XML extension will be generating in a /home/sample/ folder for every 15 mins. I need to monitor those files in that particular folder for every hour. If no file has been generated in that particular folder for an... (7 Replies)
Discussion started by: siri_886
7 Replies

5. Shell Programming and Scripting

Shell syntax checker available, or is a new project needed?

I'd like a shell-script syntax checker that can detect at least the following errors, and more: 1. Variable $VAR used but VAR has not been defined. 2. Variable VAR defined but never used. 3. Use of unquoted variables which might break external commands e.g. SOMETHING in: value=`grep $SOMETHING... (5 Replies)
Discussion started by: garethr
5 Replies

6. Shell Programming and Scripting

Korn Shell script needed

Hi all, I need a Korn Shell script that will go out to all Unix Servers and pull all non humans IDs from them while at the same time produce a file to show which servers we have access to and which ones we don't. Thanks in advance. (5 Replies)
Discussion started by: vinsara
5 Replies

7. Shell Programming and Scripting

Help needed in character replacement in Korn Shell

How do I replace a space " " character at a particular position in a line? e.g. I have a file below $ cat i2 111 002 A a 33 0011 B c 2222 003 C a I want all the 1st spaces to be replaced with forward slash "/" and the 3rd spaces to have 5 spaces to get the output below: 111/002... (8 Replies)
Discussion started by: stevefox
8 Replies

8. UNIX for Dummies Questions & Answers

korn shell script to keep history of same file

Hello, How do I write a korn shell that will rename file with the current date. What I want to do is, I have a file that is re-written every day. But instead, I want to keep a 14 day history of the file. So I want to write a script that will rename the current file with a date attached to the... (2 Replies)
Discussion started by: watson2000
2 Replies

9. Shell Programming and Scripting

Korn Shell Help Needed

How do I change directories to a path given by input variable in Korn Shell? e.g. I tired with the Korn Shell below but it doesn't work. ---------------------------------- #!/bin/ksh echo "Enter folder name: \c" read folder cd $folder ---------------------------------- Any help will... (5 Replies)
Discussion started by: stevefox
5 Replies

10. Shell Programming and Scripting

Shell script syntax checker

I have a rather big script that i have written in ksh and it is falling over in two places with a 'test argument' error. I know this usually means that the if statement is not correct, but it is fine. I have looked through the rest of the script for any odd brackets or ` marks, but can't see... (2 Replies)
Discussion started by: handak9
2 Replies

Featured Tech Videos