Operațiunea de preformare în bash numai dacă o variabilă este mai mică decât o a doua variabilă [închis]

Închis. Această întrebare este off-topic . În prezent, nu acceptă răspunsuri.

Comentarii

  • Aveți o greșeală de scriere în ambele scripturi; valid=${#vaidCheck} – Asta spune vaidCheck ar trebui să fie validCheck
  • Se pare că încercați să creați o închisoare sau un container chroot. Există câteva instrumente bune care vă permit să faceți acest lucru. Utilizarea instrumentelor de nivel scăzut este dificilă și inutilă; aruncați o privire la un instrument de nivel înalt precum docker. Nu am folosit încă docker, dar ar putea fi ceea ce aveți nevoie. Am folosit chroot instrumente de închisoare și funcționează bine, dar fac unele cercetări în problemele de securitate (pentru chroot și containere). Etherul va funcționa mai bine decât orice putem face noi înșine.

Răspunde

Pentru a răspunde la întrebarea pusă în titlu succint:

if [[ "$foo" -lt "$bar" ]]; then echo "$foo is less than $bar" fi 

Testele pentru comparații întregi sunt:

 n1 -eq n2 True if the integers n1 and n2 are algebraically equal. n1 -ne n2 True if the integers n1 and n2 are not algebraically equal. n1 -gt n2 True if the integer n1 is algebraically greater than the integer n2. n1 -ge n2 True if the integer n1 is algebraically greater than or equal to the integer n2. n1 -lt n2 True if the integer n1 is algebraically less than the inte- ger n2. n1 -le n2 True if the integer n1 is algebraically less than or equal to the integer n2. 

Utilizarea e. g. < sau > face o comparație de ordine ASCII, deci [[ 0100 < 100 ]] va fi adevărat.

Comentarii

  • Stephen Harris avea dreptate că am introdus o greșeală de greșeală și aveți dreptate că am folosit o sintaxă incorectă. Cu toate acestea, chiar și după corectarea ambelor probleme, niciun script nu funcționează încă. /:
  • Adăugați set -x în partea de sus a scriptului și executați-l cu acel loc. Acest lucru vă va arăta ce face de fapt scriptul, astfel încât să îl puteți compara cu ceea ce credeți face ' și editați în consecință.

Răspuns

Ei bine, am corectat greșeala de tipar, care cu siguranță rupea programul și Am reparat sintaxa operatorului, de asemenea cu siguranță o rupt. Cu toate acestea (și acest lucru poate părea ridicol), odată ce am corectat aceste probleme, am preformat operațiunea valid=${#validCheck} manual pentru a testa lungimea șirului, în caz că am constatat că lungimea directorului avea de fapt 45 de caractere, nu 46. Mă simt ca un drog în acest moment, dar mă bucur că problema a fost rezolvată și că pot trece la funcții mai presante. Vă mulțumesc amândurora pentru corecțiile făcute la greșelile mele și vă mulțumesc Richard pentru sugestia dvs. de instrumente de închisoare chroot.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *