Ciao a tutti, Mi trovo nella situazione di avere delle cartelle e dei file. Ho una cartella dir1 e una cartella dir1.alt. Ogni tanto mi trovo nella situazione di dover sostituire temporaneamente dir1 con dir1.alt, rinomando dir1 in dir1.old e dir1.alt in dir. Lo stesso dovrebbe avvenire con delle "dir2" (insieme alle quali viene obbligatoriamente cambiato "file" con "file.alt").
Il mio script bash dovrebbe prima informarmi se sono presenti le cartelle .old e .alt, e chiedermi se sostituire dir1, dir2 o entrambe, capendo da solo
se dover sostituire con le .alt o rimettere le .old al loro posto. Sfortunatamente sono un po' arrugginito in bash e programmazione, e come mi aspettavo il mio script è incasinato più del dovuto e non funziona. Questo è lo script: #!/bin/bash adir="dir1"; tdir="dir2"; tfile="file"; echo "0 ---> OK"; echo ">0 ---> NOT" ls "$adir.old" &> /dev/null; adOLDP=$?; echo "a OLD ---> $adOLDP"; ls "$adir.alt" &> /dev/null; adALTP=$?; echo "a ALT ---> $adALTP"; ls "$tdir.old" &> /dev/null; tdirOLDP=$?; echo "T OLD ---> $tdirOLDP" ls "$tdir.alt" &> /dev/null; tdirALTP=$?; echo "T ALT ---> $tdirALTP"; echo; echo "1) Switch a"; echo "2) Switch t"; echo "3) Switch Both"; echo "0) Nothing"; read if [[ $REPLY>3 || $REPLY<0 ]] then REPLY=0; fi if [ $REPLY == 0 ] then echo "Nothing done"; exit; fi if [[ "$REPLY == 1" || "$REPLY == 3" ]] then if [ "$adOLDP"=="0" ] then echo "Switching to a OLD"; mv "$adir" "$adir.alt"; mv "$adir.old" "$adir"; fi else if [ "$adALTP"=="0" ] then echo "Switching to a ALT"; mv "$adir" "$adir.old"; mv "$adir.alt" "$adir"; fi fi if [[ "$REPLY == 2" || "$REPLY == 3" ]] then if [ "$tdOLDP"=="0" ] then echo "Switching to t OLD"; mv "$tdir" "$tdir.alt"; mv "$tdir.old" "$tdir"; mv "$tfile" "$tfile.alt": mv "$tfile.old" "tfile.alt" fi else if [ "$tdALTP"=="0" ] then echo "Switching to t ALT"; mv "$tdir" "$tdir.old"; mv "$tdir.alt" "$tdir"; mv "$tfile" "$tfile.old"; mv "$tfile.alt" "$tfile"; fi fi ### Fine script Come intervengo? Se anziché rinominare le cartelle usassi dei symlink potrei eseguire operazioni in lettura e scrittura nei file all'interno in modo totalmente trasparente? Grazie in anticipo per l'aiuto Davide -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org