2014-12-22 3 views
1

Вот мой сценарий я wanto переодеть поставил второй один:взятие

#!/bin/bash  

declare -a arr=("8.8.8.8" "8.8.4.4" "192.168.1.28")  
x=0  
DATE=`date +%Y-%m-%d:%H:%M:%S`  

echo $DATE > denemesh.txt 

while [ $x -le 2 ]  
do  
    echo " ${arr[x]}" >> denemesh.txt  
    ping -c 4 ${arr[x]} | tail -1| awk ' {print $4 }' | cut -d '/' -f 2 >> denemesh.txt 
    x=$(($x + 1))  
done 

В настоящее время, результат выглядит следующим образом:

2014-12-22:20:22:37  
    8.8.8.8  
18.431  
    8.8.4.4  
17.758  
    192.168.1.28  
0.058 

Можно ли изменить к выходу вместо этого выглядеть?

2014-12-22:20:22:37  
    8.8.8.8   18.431  
    8.8.4.4   17.758  
    192.168.1.28  0.058 
+0

Вы должны стараться избегать использования старых и устаревших обратных ссылок, вместо этого используйте круглые скобки: DATE = $ (дата +% Y-% m-% d:% H:% M:% S) ' – Jotne

ответ

1

Вам действительно нужно просто изменить одну строку:

echo -n " ${arr[x]}" >> denemesh.txt  

Использование -n флаг подавляет замыкающий символ новой строки, и поэтому ваш следующий оператор должен приложить к текущей строке. Затем вы можете настроить форматирование по своему усмотрению.

1

Несомненно. Попробуйте что-то вроде этого:

declare -a arr=("8.8.8.8" "8.8.4.4" "192.168.1.28")  
d=$(date +%Y-%m-%d:%H:%M:%S) 

echo "$d" > denemesh.txt 

for ip in "${arr[@]}" 
do  
    printf ' %-12s' "$ip" 
    ping -c 4 "$ip" | awk 'END{split($4,a,"/"); printf "%12s\n", a[2]}' 
done >> denemesh.txt 

я использовал printf с спецификаторов формата для выравнивания вывода. %-12s выравнивает по левому краю первый столбец с фиксированной шириной 12 символов, а %12s в awk выравнивает второй столбцы. Вместо того, чтобы использовать цикл while, я избавился от вашей переменной x и зациклил на значения в массиве напрямую. Я также изменил старомодный синтаксис backtick в вашем скрипте, чтобы вместо этого использовать $(). awk способен самостоятельно выводить результат, поэтому я удалил использование хвоста и вырезал тоже. Наконец, вы можете просто перенаправить вывод цикла, а не поставить >> в конце каждой строки.

Смежные вопросы