Script Help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script Help
# 1  
Old 10-01-2008
Script Help

==
A big apology for the completely generic thread title!!
==

Hi All,

Just wondering if somebody could please give me a hand with a script I'm writing. At the moment it's doing what I want it to do but I there are a couple of things that I would like to add to it and I also feel that it's probably not written quite as well as it could be. I've had a little bit of help and have thrown the rest together (as you can probably tell)

=====
read -p "Enter Filename: " filename;
if [ "$filename" = "" ]
then
echo "You must enter a Filename!"
exit 1
fi
read -p "Enter File System: " filesystem;
if [ "$filesystem" = "" ]
then
echo "You must enter a file system!"
exit 1
else
grep $filename /dir/tmp/filename.xtn | grep $filesystem | awk '{print$18}' | command &
=====

The command after the else is working fine (have changed a couple of things in there just for the sake of this post)

There are two changes that I'd like to make but I'm not having too much luck finding an answer:

1. I'd like to make it mandatory that the Filename MUST contain at least 6 characters (letters and/or numbers) before proceeding to the next step.

2. I'd like the script to prompt the user if they would like to perform this operation on another file with a Yes/No answer at the end.

Nice to do if possible:

1. Force Caps on the Filename variable.

Many thanks, Ben

Last edited by drex; 10-01-2008 at 07:52 AM..
# 2  
Old 10-11-2008
Sorry for the delay. Don't know why your post missed our attention.

1. Six letters or more:
Code:
if echo $filename | sed -e '/....../' ; then
  # filename is ok
else
  print "Filename must be 6 or more characters in length!"
fi

Using a similar technique you can check for other things, such as spaces, invalid characters, etc.

3. Convert to upper case:
Code:
filename=`echo $filename | tr 'a-z' 'A-Z'`

Note: someone please check me on this: I've not used tr in a long time.

Finally, #2:
Code:
let done=0
while [ $done == 0 ]; do 
  # YOUR CODE ABOVE

  read -p "Are you done yet? (Y/N) " yesno
  if [ "$yesno" == "Y" -o "$yesno" == "y" ]; then
     let done=1
  fi
done

# 3  
Old 10-11-2008
Quote:
Originally Posted by otheus
Sorry for the delay. Don't know why your post missed our attention.

1. Six letters or more:
Code:
if echo $filename | sed -e '/....../' ; then


There's no need for an external command:

Code:
if [ ${#filename} < 6 ]; then

Quote:
Code:
  # filename is ok
else
  print "Filename must be 6 or more characters in length!"
fi

...
Finally, #2:
Code:
let done=0


Non-standard. All you need is:
Code:
done=0

Quote:
Code:
while [ $done == 0 ]; do


Non-standard. Use '=' not '=='.
Quote:
Code:
  # YOUR CODE ABOVE

  read -p "Are you done yet? (Y/N) " yesno


The -p option is non standard.
Quote:
Code:
  if [ "$yesno" == "Y" -o "$yesno" == "y" ]; then
     let done=1
  fi
done

Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question