Forhåndsoperation kun i bash, hvis en variabel er mindre end en anden variabel [lukket]

Lukket. Dette spørgsmål er uden for emnet . Det accepteres i øjeblikket ikke svar.

Kommentarer

  • Du har en skrivefejl i begge scripts; valid=${#vaidCheck} – Det siger vaidCheck; skal være validCheck
  • Det ser ud til, at du prøver at oprette et chroot fængsel eller container. Der er nogle gode værktøjer, der giver dig mulighed for at gøre dette. Brug af værktøjer på lavt niveau er vanskelig og unødvendig; se på et værktøj på højt niveau som docker. Jeg har endnu ikke brugt docker, men kan være det, du har brug for. Jeg har brugt chroot fængselsværktøjer, og de fungerer godt, men undersøger sikkerhedsproblemerne (for chroot og containere). Ether fungerer bedre end alt, hvad vi selv kan gøre.

Svar

At besvare spørgsmålet i titlen 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. 

Brug af e. g. < eller > foretager en ASCII-ordresammenligning, så [[ 0100 < 100 ]] vil være sand.

Kommentarer

  • Stephen Harris havde ret i, at jeg havde placeret en tastefejl, og du havde ret i, at jeg havde brugt forkert syntaks. Men selv efter at begge problemer er rettet, fungerer hverken script endnu. /:
  • Tilføj set -x mod toppen af dit script, og kør det med det på plads. Det viser dig, hvad scriptet faktisk laver, så du kan sammenligne det med, hvad du tænker det ' laver og rediger i overensstemmelse hermed.

Svar

Nå, jeg rettede skrivefejlen, som bestemt bryder programmet, og Jeg fik fast operatørens syntaks og bragte det bestemt også. Men (og det kan virke latterligt), når jeg først har rettet disse problemer, formede jeg valid=${#validCheck} operationen manuelt for at teste længden af strengen lige i tilfælde og fandt ud af, at katalogets længde var faktisk 45 tegn, ikke 46. Jeg har lyst til en doping lige nu, men jeg er glad for, at problemet er løst, så jeg kan gå videre til mere presserende funktioner. Tak begge for dine rettelser til mine skrivefejl og tak Richard for dit forslag til chroot-fængselsværktøjer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *