Puncte:0

Treceți argumentele comenzii ca variabilă

drapel ar

Am creat un script bash pentru a face o copie de rezervă a serverului meu AWS Ligthsail cu restic. Totul funcționează în sfârșit, dar există un lucru la care nu am putut găsi un răspuns.

Doar partea în care este problema:

//Setări
uitare_politică=(--păstrare-în-un-zil 7d --păstrare-în-un-săptămânal-1 min --păstrare-în-în-un-lunar 1 an --păstrare-în-a lungul-anual 2 ani)

//(⦠alt cod)

uita_vechi () {
    # Uitați și tăiați
    restic -r $RESTIC_REPOSITORY uitați „${forget_policy}” --prune | Buturuga

    # Verificați dacă starea de ieșire este ok
    stare=$?
    if [ $status -ne 0 ]; atunci
        jurnal „Uitați eșuat ${status}”
        iesirea 1
    fi
}

//(⦠alt cod)

uita_vechi

Ieșire

>> Argument nevalid „--prune” pentru indicatorul „--keep-within-daily”: nu a fost găsit niciun număr

Nu pot trece variabila $forget_policy la comanda forget. Când învelesc varibale în „” primesc

>> steag necunoscut: --keep-within-daily 7d --keep-within-weekly 1m --keep-within-monthly 1 an --keep-within-yearly 2y

Când copiez conținutul variabilei direct în comandă, funcționează. Deci trebuie să fac ceva greșit cu trecerea variabilei.

Puncte:1
drapel hr

Pentru a extinde fiecare a elementelor matricei dvs. de argumente ca un cuvânt separat de care aveți nevoie „${forget_policy[@]}”

„${forget_policy}” este echivalent cu „${forget_policy[0]}” deci se extinde doar la primul argument - motiv pentru care ajungi cu --keep-in-daily --prune

Vezi Matrice subsecțiunea sub PARAMETRI în pagina de manual bash.

Rever_2019 avatar
drapel ar
Mulțumiri. Nu fac (din păcate) destule scripturi bash. Nu am observat că l-am transformat într-o matrice, adăugând (). Înainte, tocmai am avut „forget_policy="--keep-within-daily 7d --â¦". Acesta este doar un șir și nu a funcționat. Am căutat pe Google și am găsit „versiunea de matrice”
drapel hr
@Rever_2019 în acest caz a fost un accident fericit - folosirea unei matrice este exact modalitatea corectă de a gestiona acest tip de listă de argumente ;)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.