How to combine awk and bash commands in script ?

Dear friends,

I am just trying write one script using 2 files
one file will contain details like below

#X SERVER X LOCATION
URL="http://www.abcd.com"
FILENAME="abc.txt"
ID_NAME="myabc_xyz"
SERVER_PATH="/usr/local/dummy/html/....."

#Y SERVER Y LOCATION
URL="http://www.xyz.com"
FILENAME="xyz.txt"
ID_NAME="my_dummy_xyz"
SERVER_PATH="/usr/local/server/htm/dummy"

#DUMMY SERVER
 URL="http://www.dummy.com"
 FILENAME="dummy.txt"
 ID_NAME="LMNOP"
 SERVER_PATH="/home/user/abc"
 

another file will be shell script to process above details
which looks like this

cd /mypath
sh javascript.sh -x $URL

mv myjava_file $FILENAME

sed -e "s/abcdic...... name\=\"/$ID_NAME name\=\"/g" $FILENAME

find $SERVER_PATH  -iname "*$FILENAME" -delete

mv $FILENAME $SERVER PATH

Here my problem is how do I use above server detail one after another in processing shell script ?

processing shell script should use X server and X location details such as URL, SERVER_PATH, FILENAME, ID_NAME first, then Y server, Z server till end of file..

please help...

#!/bin/bash

while read line
do
        [[ "$line" =~ ^# ]] && continue
        [[ "$line" =~ ^URL ]] && URL="${line#*=}"
        [[ "$line" =~ ^FILENAME ]] && FILENAME="${line#*=}"
        [[ "$line" =~ ^ID_NAME ]] && ID_NAME="${line#*=}"

        if [[ "$line" =~ ^SERVER_PATH ]]
        then
                SERVER_PATH="${line#*=}"
                URL="${URL//\"/}"
                FILENAME="${FILENAME//\"/}"
                ID_NAME="${ID_NAME//\"/}"
                SERVER_PATH="${SERVER_PATH//\"/}"

                # Now you have all values in variable. 
                # Put your code here
        fi

done < filename
1 Like

before putting my code I tried to use echo its not printing

# Now you have all values in variable. 
 # Put your code here
        echo $URL
        echo $FILENAME
        echo $ID_NAME
        echo $SERVER_PATH
        fi

manually I pasted on terminal

URL="http://www.abcd.com" 
FILENAME="abc.txt"
ID_NAME="myabc_xyz" 
SERVER_PATH="/usr/local/dummy/html/....."

got output --->

echo $URL
http://www.abcd.com
user@as:~/Documents/sh$ echo $FILENAME
abc.txt
user@as:~/Documents/sh$ echo $SERVER_PATH
/usr/local/dummy/html/.....

here is error msg

process.sh: 6: process.sh: [[: not found
process.sh: 7: process.sh: [[: not found
process.sh: 8: process.sh: [[: not found
process.sh: 9: process.sh: [[: not found
process.sh: 11: process.sh: [[: not found
process.sh: 6: process.sh: [[: not found
process.sh: 7: process.sh: [[: not found
process.sh: 8: process.sh: [[: not found
process.sh: 9: process.sh: [[: not found
process.sh: 11: process.sh: [[: not found

What OS & shell are you using?

Also I noticed that there are some space in front of the string, so remove the caret ^

#!/bin/bash

while read line
do
        [[ "$line" =~ ^# ]] && continue
        [[ "$line" =~ URL ]] && URL="${line#*=}"
        [[ "$line" =~ FILENAME ]] && FILENAME="${line#*=}"
        [[ "$line" =~ ID_NAME ]] && ID_NAME="${line#*=}"

        if [[ "$line" =~ SERVER_PATH ]]
        then
                SERVER_PATH="${line#*=}"
                URL="${URL//\"/}"
                FILENAME="${FILENAME//\"/}"
                ID_NAME="${ID_NAME//\"/}"
                SERVER_PATH="${SERVER_PATH//\"/}"

                echo "URL: $URL"
                echo "FILENAME: $FILENAME"
                echo "ID_NAME: $ID_NAME"
                echo "SERVER_PATH: $SERVER_PATH"
        fi

done < filename
1 Like
/bin/bash

Ubuntu 12.04 LTS 32-bit

Works for me on Redhat Linux:

Here is the input file:

$ cat filename
#X SERVER X LOCATION
URL="http://www.abcd.com"
FILENAME="abc.txt"
ID_NAME="myabc_xyz"
SERVER_PATH="/usr/local/dummy/html/....."

#Y SERVER Y LOCATION
URL="http://www.xyz.com"
FILENAME="xyz.txt"
ID_NAME="my_dummy_xyz"
SERVER_PATH="/usr/local/server/htm/dummy"

#DUMMY SERVER
 URL="http://www.dummy.com"
 FILENAME="dummy.txt"
 ID_NAME="LMNOP"
 SERVER_PATH="/home/user/abc"

Here is the o/p:

$ ./script
URL: http://www.abcd.com
FILENAME: abc.txt
ID_NAME: myabc_xyz
SERVER_PATH: /usr/local/dummy/html/.....
URL: http://www.xyz.com
FILENAME: xyz.txt
ID_NAME: my_dummy_xyz
SERVER_PATH: /usr/local/server/htm/dummy
URL: http://www.dummy.com
FILENAME: dummy.txt
ID_NAME: LMNOP
SERVER_PATH: /home/user/abc

then is there any provision to get output in ubuntu 12.04 ?

---------- Post updated at 11:32 PM ---------- Previous update was at 11:27 PM ----------

I installed

ksh

its printing in #DUMMY SERVER at #1 I had put space(typing mistake) in actual file there is no space , whether I can remove

^

? and please explain code also..

The caret sign is to match beginning of pattern. You can add or remove as per your input file.

So is the script working for you?

1 Like

Yes its working fine with ksh ..thank you so much..

suppose if I call this script in /etc/rc.local whether it will work because my current shell is bash

All you have to do is put the shebang to specify the interpreter for your script:

#!/bin/bash
1 Like

Thank you so much Sir..