Shell in Unix never ceases to surprise. Stumbled upon 'shift 2' command in AIX few hours ago and it's very useful.
'Shift n' command shifts the parameters passed to a shell script by 'n' numbers to the left.
For example:
if you have a shell script which takes 3 parameters like:
./mytest.sh arg1 arg2 arg3
and you use shift 2 in your shell script, then the values of arg1 and arg2 will be lost and the value of arg3 will get assigned to arg1.
For example:
if you have a shell script which takes 2 parameters like:
./mytest arg1 and arg2
and you use shift 2, then values of both arg1 and arg2 will be lost.
Following is a working example of shift command in AIX:
testsrv>touch shifttest.sh
testsrv>chmod a+x shifttest.sh
testsrv>vi shifttest.sh
testsrv>cat shifttest.sh
#!/bin/ksh
SID=$1
BACKUP_TYPE=$2
echo "Before Shift: $1 and $2 => SID=$SID and BACKUPTYPE=$BACKUP_TYPE"
shift 2
echo "After Shift: $1 and $2 => SID=$SID and BACKUPTYPE=$BACKUP_TYPE"
testsrv>./shifttest.sh orc daily
Before Shift: orc and daily => SID=orc and BACKUPTYPE=daily
After Shift: and => SID=orc and BACKUPTYPE=daily
Note that the values of arguments passed has been shifted to left, but the values of variables has remained intact.
'Shift n' command shifts the parameters passed to a shell script by 'n' numbers to the left.
For example:
if you have a shell script which takes 3 parameters like:
./mytest.sh arg1 arg2 arg3
and you use shift 2 in your shell script, then the values of arg1 and arg2 will be lost and the value of arg3 will get assigned to arg1.
For example:
if you have a shell script which takes 2 parameters like:
./mytest arg1 and arg2
and you use shift 2, then values of both arg1 and arg2 will be lost.
Following is a working example of shift command in AIX:
testsrv>touch shifttest.sh
testsrv>chmod a+x shifttest.sh
testsrv>vi shifttest.sh
testsrv>cat shifttest.sh
#!/bin/ksh
SID=$1
BACKUP_TYPE=$2
echo "Before Shift: $1 and $2 => SID=$SID and BACKUPTYPE=$BACKUP_TYPE"
shift 2
echo "After Shift: $1 and $2 => SID=$SID and BACKUPTYPE=$BACKUP_TYPE"
testsrv>./shifttest.sh orc daily
Before Shift: orc and daily => SID=orc and BACKUPTYPE=daily
After Shift: and => SID=orc and BACKUPTYPE=daily
Note that the values of arguments passed has been shifted to left, but the values of variables has remained intact.
No comments:
Post a Comment