Twostone
Commodore
- Registriert
- Dez. 2013
- Beiträge
- 5.113
Hallo.
Als Teil eines Scriptes für wiederkehrende ZFS-Manipulationen stell sich mir folgendes Problem:
In einer select-Schleife (deren Eigenschaften ich mir dank while-Schleife neu anzeigen lassen kann) werden die Elemente der Liste aus einer Variable gebildet. Wenn ich jetzt ein Element verändere, wird dieses jedoch nicht aktualisiert.
Wie wäre dies lösbar?
Codeschnipsel:
Es geht um Manipulation von Dataset-Eigenschaften, hier speziell um Quota.
geht natürlich noch weiter, funktioniert auch so weit, nur eben, daß die Variable DSOPTSCUR nicht wirklich aktualisiert dargestellt wird, bevor ich den select-loop nicht verlassen und neu aufgerufen habe.
Hat jemand eine Idee, wie man das noch innerhalb des loops aktualisieren könnte?
Als Teil eines Scriptes für wiederkehrende ZFS-Manipulationen stell sich mir folgendes Problem:
In einer select-Schleife (deren Eigenschaften ich mir dank while-Schleife neu anzeigen lassen kann) werden die Elemente der Liste aus einer Variable gebildet. Wenn ich jetzt ein Element verändere, wird dieses jedoch nicht aktualisiert.
Wie wäre dies lösbar?
Codeschnipsel:
Es geht um Manipulation von Dataset-Eigenschaften, hier speziell um Quota.
Code:
[...]
while true; do
[...]
f_ds_opts(){
DSOPTSCUR=( $(zfs get all ${DATASET} | grep -iE " compression | dedup | atime | relatime | checksum | quota | refquota | canmount | reservation | refreservation | logbias | recordsize | sharesmb | sharenfs " | awk '{ printf("%-20s%-20s\n",$2,$3) }') )
}
OPTIONS=( $(zfs list -r -o name,available,used,referenced,usedsnap,usedds,mounted,compressratio,refcompressratio -s name | tail -n +2) )
select DATASET in ${OPTIONS
[*]}; do
if [ ! -z "${DATASET}" ]; then
DSPS3="${PS3}"
PS3="Was möchten Sie ändern?"
DATASET=$(echo ${DATASET} |awk '{ print $1 }')
echo -e "gewählt: ${RED}${DATASET}${NORMAL}"
f_ds_opts
select CHANGE in ${DSOPTSCUR
[*]}; do
CHANGE=$(echo ${CHANGE} | awk '{print $1}')
case ${CHANGE} in
quota){ #int recursive
echo ""
echo "Abkürzungen: xK xM xG xT"
echo -n "Bitte neue Größe für ${CHANGE} angeben: "
read OPT
zfs set ${CHANGE}=${OPT} ${DATASET}
f_ds_opts
}
;;
[...]
geht natürlich noch weiter, funktioniert auch so weit, nur eben, daß die Variable DSOPTSCUR nicht wirklich aktualisiert dargestellt wird, bevor ich den select-loop nicht verlassen und neu aufgerufen habe.
Hat jemand eine Idee, wie man das noch innerhalb des loops aktualisieren könnte?
Zuletzt bearbeitet: