PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrzeiligen string in variable packen und in textblock einfügen



Rogdab
07-08-2008, 07:27
Hallo,

ich hole mit snmpwalk einige infos von einen switch, es wird für jeden Port eine Zeile verwendet, nun möchte ich jeweils diese zeile in einen Textblock einfügen, wie kann ich das machen?

Beispiel:

port1
port2
port3



funktion {
option eins
port port1
name port1
}
funktion {
option eins
port port2
name port2
}

usw.
wenn ich den snmpwalk gesamt in eine varibale packe und dann ausgebe bekommen ich:

port1 port2 port3
mit immer nur einem leerszeichen dazwischen.

EDIT:
ich hab das jetzt so gelöst:


POOL_COUNT=`echo $POOLNAME | wc -w`
#echo $POOL_COUNT

for pools_no in `seq 1 $POOL_COUNT`
do
POOLNAME2=`echo $POOLNAME | awk '$1 ~ // {print $'$pools_no'}'`

echo "define service{
use pools_tmpl
service_description Pool: ${POOLNAME2}
check_command check_pools!${POOLNAME2}
}"
done

ist dieser weg ok, oder kann man das kürzen?
danke

undefined
07-08-2008, 10:22
Verwende einen Heredoc (http://editplus.info/wiki/Heredoc) Syntax

jan61
07-08-2008, 20:13
Moin,

wenn Du in der bash unterwegs bist: Arrays (siehe auch http://www.jan-trippler.de/de/script_tipps/quotes.html)


jan@jack:~/tmp> cat pool.sh
#! /bin/bash

# mehrzeilige Variable
POOLNAME='port1
port2
port3'

# Array deklarieren und fuellen
declare -a pool_arr
pool_arr=($POOLNAME)

# Schleife ueber alle Array-Elemente
for (( i=0; i < ${#pool_arr
}; i++ )); do
echo "define service{
use pools_tmpl
service_description Pool: ${pool_arr[$i]}
check_command check_pools!${pool_arr[$i]}
}"
done

exit 0

jan@jack:~/tmp> ./pool.sh
define service{
use pools_tmpl
service_description Pool: port1
check_command check_pools!port1
}
define service{
use pools_tmpl
service_description Pool: port2
check_command check_pools!port2
}
define service{
use pools_tmpl
service_description Pool: port3
check_command check_pools!port3
}
@undefined: Wie würdest Du das mit einem HERE-Dokument lösen?

Jan