Traceroute script weird output

This script is giving weird output

#!/bin/bash

NETPATH=(`/bin/traceroute -n 4.2.2.2 | awk '{print $2}'`)


for i in "${NETPATH[@]}"
   do 
        echo $i
done

The output:

to
11.11.11.1
1.1.1.1
99.111.208.2
traceroute_test.sh
traceroute_test.sh
traceroute_test.sh
131.164.43.240
151.177.55.186
4.68.62.37
4.69.234.158
4.234.9.140.193
4.69.138.35
4.2.2.2

The lines that are displaying "traceroute_test.sh" are lines that would normally show * * * during a regular traceroute.

Also unless I run this script in a directory where there are no other files, all files are listed in the out put when I run the script.

Finally, I am using AWK because otherwise I was getting each column/element of the traceroute on a new line instead of each hop being on its own line.

So:

1) why is the name of the script showing up in the output?
2) why if there are other files in the dir the script is in are the files getting listed when I run the script?
3) also how do I keep the script from interperting every element in the output of trace route as a seperate line?

echo "$i"

No change:

#!/bin/bash

#NETPATH=(`/bin/traceroute -n 4.2.2.2 | awk '{print $2}'`)
NETPATH=(`/bin/traceroute -n 4.2.2.2 `)

#echo ${NETPATH[@]}

for i in "${NETPATH[@]}"
   do 
        echo "$i"
done

OUTPUT:

to
4.2.2.2
(4.2.2.2),
30
hops
max,
40
byte
packets
1
11.11.11.1
1.089
ms
1.068
ms
1.059
ms
2
1.1.1.1
3.867
ms
3.933
ms
3.998
ms
3
traceroute_test.sh
traceroute_test.sh
traceroute_test.sh
4
traceroute_test.sh
traceroute_test.sh
traceroute_test.sh
5
traceroute_test.sh
traceroute_test.sh
traceroute_test.sh
6
11.144.214.12
13.525
ms
12.765
ms
traceroute_test.sh
7
121.164.123.132
11.713
ms
9.647
ms
9.639
ms
8
151.164.22.186
16.910
ms
11.117
ms
12.546
ms
9
4.68.62.181
30.343
ms
4.68.62.37
30.527
ms
30.810
ms
10
4.69.138.158
29.556
ms
29.800
ms
29.663
ms
11
4.69.140.193
42.564
ms
4.69.140.189
33.913
ms
4.69.140.193
41.961
ms
12
4.69.138.35
30.019
ms
31.263
ms
30.018
ms
13
4.2.2.2
30.318
ms
30.769
ms
30.483
ms

I am fine with using AWK to get the IP. But I don't understand why I am getting the name of the script as output on hops that are not returning an IP. Also as I mentioned earlier why do files that are in the same directory show up as put?

NETPATH="(`/bin/traceroute -n 4.2.2.2 `)"

please post the output of /bin/traceroute -n 4.2.2.2 using code tags!

The pathname expansion is happening because the asterisks generated by the command substitution are unquoted. The *'s become the list of files before the result is stored in NETPATH.

Regards,
Alister

DUDE!

Thanks

Sorry about not using the code tags.

The whole script as posted can be replaced with:

#!/bin/bash
/bin/traceroute -n 4.2.2.2 2>&1

An environment variable like $NETPATH is not a file.

What does a sample "traceroute" on your computer look like?
What is you expected output?

Please refer the below link