Sponsored Content
Top Forums Shell Programming and Scripting .sh file syntax checking script Post 302152221 by fabulous2 on Wednesday 19th of December 2007 04:01:05 AM
Old 12-19-2007
Quote:
1. Your set -u is doing nothing at all since you have defaults for the only variables you use.
I do not understand your objection. Of course it does nothing for the script that I posted, because it has now been debugged and is working fine. The purpose of it is to detect any issues if some maintenance programmer comes along and mucks with it.

Personally, I think that it should always be an error to use an uninitialized variable; if I had written sh, it would not even be an option. Neither would -n. (Both would always be on.) But I have to work with whats there.


Quote:
2. Use either a variable set to the full path (preferable) for a full path to programs you run.
eg
Code:
---------
FIND=/usr/bin/find
...
$FIND $opt_p $opt_R -type f -iname "*.sh"...
---------
First, why would I ever want to use the full path to a command? That makes it totally unportable! The whole purpose of something like the PATH env var is to get around issues like this.

Second, you did not complete your thought: what is the or clause?


Quote:
3. Use POSIX arguments to find, it takes more work but is portable.
I hear you, and wish that I could obey, but after looking into the paucity of stuff actually supported by POSIX find I gave up. It does not support any of the functionality that I really want this function to have, like recursive finding in a directory tree and case insensitivity. If you know of an elegant way to do those things I am open, but I really do not want to write all of them inside this function.

When I did a "man find" just now on a linux box, it did note that many of the non-POSIX options that I am using are not unique to GNU's find but are implemented on other systems too, somaybe it is mostly portable...


Quote:
4. Instead of saying that the script will exit, print a usage message, you have that in the comments, but a usage message is better.
Rant mode on: there is nothing more annoying than the lazy unix programmer habit of responding to an input error with the correct usage.

I usually have already read the man page or whatever before using the command, so that usage message tells me NOTHING.

What I really need to know is what--out of the million things that could possibly be wrong--is the actual wrong thing with my input, not what the correct generic form is.

If a command needs exactly 7 args and I have supplied 8, dang it, tell me that I have 1 extra argument as the error message--don't tell me
Quote:
usage: someCommand arg1 arg2 arg3 arg4 arg5 arg6 arg7
I could waste minutes staring at my input trying to determine what is wrong until I realize what the problem is that the error message should have told me in the first place.

This unix practice is done solely, as near as I can tell, because it makes the programmer's job slightly easier. But it is bad for the user.


Quote:
As an improvement, instead of assuming bourne/bourne compatability, test for a magic number in the first line of the script and run the <script interpreter> -n based on that, if there is none, then by all means default to using bourne.
I am slightly confused by your request. My function currently only looks for *.sh files, so why should I not assume that they are bourne shell scripts? Do people routinely write korn shell, c shell, etc script files and use the same .sh file extension for all of them, instead of using something sensible like .ksh, .csh, etc?

I do not even know if other shells support the -n syntax check option, so I would just as soon ignore all script files except those purporting to be bourne shell scripts.

Would it be a better idea to abandon searching for *.sh files, and instead look at every normal file and read its first line and only assume that it is a bourne shell script if the first line starts with "#!/bin/sh"?
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Script syntax checking

Is it possible to check the script syntax with some sort of command...? Without running the script . I'm using Sun Solaris (3 Replies)
Discussion started by: bjornrud
3 Replies

2. Shell Programming and Scripting

Simple file checking script

Hi, I have a really, what I hope is, simple question. I'm looking for a simple way to see whether a file exists or not and then perform an action based on whether it exists or not. An example of what I tried is as follows: if then { echo "File mysql exists" ... (1 Reply)
Discussion started by: _Spare_Ribs_
1 Replies

3. Shell Programming and Scripting

Script for checking and reporting file sizes in a directory.

Hi, Need help for a Script for checking and reporting database file sizes in a directory. Request you to please give your valuable inputs. Thanks a lot in advance. Best Regards, Marconi (1 Reply)
Discussion started by: marconi
1 Replies

4. UNIX for Dummies Questions & Answers

Checking file sizes in script

Hi, I'm trying to check a filesize within a script and then excute a relevant action. An example is below: if then rm $filename rm $filename2 elif then rm $filename2 fi Basically if $filename2 has a filesize of 0 then I want both files to be removed, but... (6 Replies)
Discussion started by: chris01010
6 Replies

5. Shell Programming and Scripting

Checking ksh script syntax

To check a bash script syntax without executing it we use: bash -n scriptname What should be the equivalent command for checking a ksh script? (8 Replies)
Discussion started by: proactiveaditya
8 Replies

6. Shell Programming and Scripting

Script check for file, alert if not there, and continue checking until file arrives

All, Is there a way to keep checking for a file over and over again in the same script for an interval of time? Ie If { mail -user continue checking until file arrives file arrives tasks exit I don't want the script to run each time and email the user each time a file... (4 Replies)
Discussion started by: markdjones82
4 Replies

7. Shell Programming and Scripting

Help with script checking for a file in various servers

I am trying to write a script that checks whether or not, a file exists on multiple servers. My code / logic so far is: #!/usr/bin/ksh print "Enter File name to be checked" read MYFILE ssh server1 " cd /var/opt/logs ; if then ... (4 Replies)
Discussion started by: momin
4 Replies

8. Shell Programming and Scripting

File checking script need help

Hi, Gurus, I need a scripts to check specified file if it exists or not at certain time (say every month between 5th and 7th). if file exists do something otherwise do another thing. can anybody help this? Thanks in advance :wall: (3 Replies)
Discussion started by: ken002
3 Replies

9. Shell Programming and Scripting

Checking LB status.. stuck in script syntax of code

#!/bin/ksh #This script will check status of load balancer in AIX servers from hopbox #Steps to do as folows : #Login to server #netstat -ani | grep <IP> #check if the output contains either lo0 OR en0 #if the above condition matches, validation looks good #else, send an email with impacted... (7 Replies)
Discussion started by: vinil
7 Replies

10. Shell Programming and Scripting

Command script for checking a file existence

Hello, I have a directory where sometimes appear a certain file name - and I'd like to be notified by email when that happens... so what command or script I may use? e.g. if there's a file named "adam" in the directory named "dir1" then send a mail to "abc@abc.com".. it needs to permanently... (5 Replies)
Discussion started by: netrom
5 Replies
All times are GMT -4. The time now is 01:24 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy