Take action or execute a command based upon shell script name

by on January 23, 2007 · 2 comments· LAST UPDATED January 25, 2007

in , ,

You would like to run different commands or task based upon a single shell script name. For example script name is backup Instead of writing 3 different script write one script and softlink using ln command:

=> backup - original script

=> backup.nas - Script to backup data to NAS device

=> backup.ftp - Script to backup data to FTP Server

=> backup.scp - Script to backup data to Remote SSH server

Use ln command to make link between backup and other files
$ ln -s backup backup.nas
$ ln -s backup backup.ftp
$ ln -s backup backup.scp

Now use basename command strip directory and suffix from script name. $0 variable always print scriptname.
#!/bin/bash
echo My name is $(basename $0)

Output:

My name is backup

Let us store output to variable
#!/bin/bash
ME=$(basename $0)

Now simply use the case statement to get script name. The case statement allows you to match several values against $ME variable. Here is final script:

#!/bin/bash
ME=$(basename $0)
case $ME in
        backup.nas)
           echo "Write code to mount NAS using smbmount, use cp to copy data to NAS"
           ;;
        backup.ftp)
           echo "Write code to copy data using FTP"
           ;;
        backup.scp)
           echo "Write code to copy data using OpenSSH scp command"
           ;;
        *)
           echo "Syntax error - show some help"
           echo "Use $ME.nas or $ME.ftp or $ME.ftp"
           ;;
esac

To backup data to NAS just type
backup.nas

To backup data to FTP server just type
backup.ftp

Benefits

  • Ease of use
  • Saves time
  • Your work looks quite professional

See also:

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 2 comments… read them below or add one }

1 Mahesh May 4, 2007 at 7:05 am

Hi

I am taking tar.gz backup on RH9 and copying the file to windows ftp server shceduled shell script. I am seeing the file size difference at both location. Windows server is with ntfs partition. What could be the reason , that i am seeing 4 to 5 mb increased file size on windows server that RH 9 linux server?

Regards /mahesh

Reply

2 tASK July 20, 2007 at 12:42 pm

Did you set binary mode before transfer file on FTP server?

Reply

Leave a Comment

Previous post:

Next post: