Voer een bewerking in bash alleen uit als een variabele kleiner is dan een tweede variabele [gesloten]

Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.

Reacties

  • Je hebt een typefout in beide scripts; valid=${#vaidCheck} – Dat zegt vaidCheck; zou validCheck
  • moeten zijn. Het lijkt erop dat je een chroot gevangenis of container probeert te maken. Er zijn een aantal goede tools om dit te doen. Het gebruik van de tools op laag niveau is lastig en niet nodig; bekijk een tool op hoog niveau zoals docker. Ik heb Docker nog niet gebruikt, maar zou kunnen zijn wat je nodig hebt. Ik heb chroot jail-tools gebruikt, en ze werken goed, maar doe wat onderzoek naar de beveiligingsproblemen (voor chroot en containers). Ether zal beter werken dan alles wat we zelf kunnen doen.

Antwoord

Om de vraag in de titel te beantwoorden kort en bondig:

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

De tests voor vergelijkingen van gehele getallen zijn:

 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. 

e. g. < of > doet een ASCII-ordervergelijking, dus [[ 0100 < 100 ]] zal waar zijn.

Reacties

  • Stephen Harris had gelijk dat ik een typefout had geplaatst, en je had gelijk dat ik een onjuiste syntaxis had gebruikt. Maar zelfs nadat beide problemen zijn verholpen, werkt geen van beide scripts nog steeds. /:
  • Voeg set -x toe aan de bovenkant van je script en voer het uit met dat op zijn plaats. Dat zal je laten zien wat het script eigenlijk doet, zodat je dat kunt vergelijken met wat je denkt het ' doet en dienovereenkomstig bewerken.

Answer

Nou, ik heb de typefout gecorrigeerd, die zeker het programma kapot maakte, en Ik heb de syntaxis van de operator gerepareerd en ook zeker verbroken. Maar (en dit lijkt misschien belachelijk), nadat ik die problemen had gecorrigeerd, heb ik de valid=${#validCheck} -bewerking handmatig uitgevoerd om de lengte van de string te testen voor het geval dat en ontdekte dat de lengte van de directory was eigenlijk 45 tekens, niet 46. Ik voel me nu een dope, maar ik ben blij dat het probleem is opgelost en dat ik misschien doorga naar meer urgente functies. Dank u beiden voor uw correcties op mijn typefouten en dank u Richard voor uw suggestie van chroot jail-tools.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *