[solved] "liste" in einer variable

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tobiasd
Beiträge: 95
Registriert: 03.02.2011 15:23:12
Lizenz eigener Beiträge: GNU General Public License

[solved] "liste" in einer variable

Beitrag von tobiasd » 15.09.2011 14:24:42

Hi,

ich versuch gerade unser Mailbox Backupscript so anzupassen, dass es eine Hand von E-Mail Adressen die in einer Variable festgelegt werden nicht mitgesichert werden. Um das ganze überschaubar zu machen hab ich einen Teil ausgeschnitten und angepasst:

Code: Alles auswählen

#!/bin/bash

blacklistuser='black@listed.com
back1990@xyz.com
backup2009@xyz.com'
 if [ "${user}" = "${blacklistuser}" ]; then
                echo "${user} blacklisted"
fi
Die Variable blacklistuser wird in der If-Anweißung komplett angezeigt (alle 3 Adressen als eine) gibt es eine Möglichkeit diese einzeln durch zu gehen?

Vielen dank schon mal

Tobi
Zuletzt geändert von tobiasd am 15.09.2011 16:16:06, insgesamt 1-mal geändert.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: "liste" in einer variable

Beitrag von ThorstenS » 15.09.2011 15:27:58

Ich denke du kannst was hier von recyclen:

Code: Alles auswählen

#!/bin/bash
#
# Alle Platten und Partitionen im Rechner auflisten
#  · benötigt das debian Paket disktype
# alternativ
#  · blkid -s TYPE richtig gut
#
###################################################

unset GREP_OPTIONS

# die Daten kommen in ein array, daher die umschliessenden Klammern:
DISKS=( $(for i in /dev/disk/by-id/* ; do readlink -e $i; done | sort -u| grep -ve '[0-9]$') )
PARTITIONS=( $(for i in /dev/disk/by-id/* ; do readlink -e $i; done | sort -u| grep -e '[0-9]$') )

# Infos zu den Platten ausgeben:
echo -e "Du hast ${#DISKS[@]} Platten im System, das sind:"
for element in $(seq 0 $((${#DISKS[@]} - 1))) # seq 0 bis Anzahl -1 ist notwendig, da das array bei 0 anfängt
  do
  echo -e "\t${DISKS[$element]}"
done

echo -e "Du hast ${#PARTITIONS[@]} Partitionen im System, das sind:"
for element in $(seq 0 $((${#PARTITIONS[@]} - 1))) # seq 0 bis Anzahl -1 ist notwendig, da das array bei 0 anfängt
  do
  echo -ne "\t${PARTITIONS[$element]} "
  ID=$(disktype ${PARTITIONS[$element]} | awk '/file/ {print $1}  /swap/ {print "swap"} /0x83/ { print "erweiterte Partition"} ')
  #ID=$(sudo parted -s ${PARTITIONS[$element]} print 2> /dev/null | awk '/^ 1/ {print $NF}')
  [ "$ID" == '' ] && ID="unbekannt"
  echo $ID
done

echo -e "PATA Platten im System"
for i in /dev/disk/by-id/ata* ; do readlink -e $i; done | sort -u| grep -v -e '[0-9]$' | tr '\n' ' '
echo -e "\n"

echo -e "SATA Platten im System"
for i in /dev/disk/by-id/scsi* ; do readlink -e $i; done | sort -u| grep -v -e '[0-9]$' | tr '\n' ' '
echo -e "\n"

tobiasd
Beiträge: 95
Registriert: 03.02.2011 15:23:12
Lizenz eigener Beiträge: GNU General Public License

Re: "liste" in einer variable

Beitrag von tobiasd » 15.09.2011 16:15:48

Vielen dank. Problem über einen Array gelöst :)

blacklisted=(spam@mail.net ......)
for i in ${blacklisted[@]}
do
blacklistuser=${i}

Antworten