Forhåndsoperasjon i bash bare hvis en variabel er mindre enn en andre variabel [lukket]

Stengt. Dette spørsmålet er utenfor emnet . Det aksepteres for øyeblikket ikke svar.

Kommentarer

  • Du har en skrivefeil i begge skriptene; valid=${#vaidCheck} – Det står vaidCheck; skal være validCheck
  • Ser ut som om du prøver å opprette et chroot fengsel eller beholder. Det er noen gode verktøy som lar deg gjøre dette. Å bruke verktøy på lavt nivå er vanskelig og unødvendig; ta en titt på et høyt nivåverktøy som docker. Jeg har ennå ikke brukt docker, men kan være det du trenger. Jeg har brukt chroot fengselsverktøy, og de fungerer bra, men undersøker sikkerhetsproblemene (for chroot og containere). Ether vil fungere bedre enn alt vi kan gjøre selv.

Svar

Å svare på spørsmålet i tittelen kortfattet:

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

Testene for heltalssammenligninger er:

 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. 

Bruke e. g. < eller > foretar en ASCII-ordresammenligning, så [[ 0100 < 100 ]] vil være sant.

Kommentarer

  • Stephen Harris hadde rett i at jeg hadde skrevet en skrivefeil, og du hadde rett i at jeg hadde brukt feil syntaks. Imidlertid, selv etter å ha løst begge utgavene, fungerer ikke skriptet ennå. /:
  • Legg til set -x mot toppen av skriptet og kjør det med det på plass. Det vil vise deg hva skriptet faktisk gjør, slik at du kan sammenligne det med det du synes det ' gjør og rediger deretter.

Svar

Vel, jeg korrigerte skrivefeilen, som absolutt brøt programmet, og Jeg fikset syntaksen til operatøren, og ødela den også. Imidlertid (og dette kan virke latterlig), når jeg først har løst disse problemene, formet jeg valid=${#validCheck} manuelt for å teste lengden på strengen bare i tilfelle og fant at katalogens lengde var faktisk 45 tegn, ikke 46. Jeg føler meg som en doping akkurat nå, men jeg er glad problemet er løst for at jeg kan gå videre til mer presserende funksjoner. Takk begge for rettelsene til skrivefeilene mine, og takk Richard for forslaget ditt om chroot fengselsverktøy.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *