Preform-Operation in Bash nur, wenn eine Variable kleiner als eine zweite Variable ist [geschlossen]

Geschlossen. Diese Frage ist nicht zum Thema . Derzeit werden keine Antworten akzeptiert.

Kommentare

  • In beiden Skripten ist ein Tippfehler aufgetreten. valid=${#vaidCheck} – Darin steht vaidCheck; sollte validCheck
  • sein. Sieht so aus, als würden Sie versuchen, ein chroot Gefängnis oder Container zu erstellen. Es gibt einige gute Tools, mit denen Sie dies tun können. Die Verwendung der Low-Level-Tools ist schwierig und unnötig. Schauen Sie sich ein High-Level-Tool wie Docker an. Ich habe Docker noch nicht verwendet, könnte aber das sein, was Sie brauchen. Ich habe chroot Jail-Tools verwendet, die gut funktionieren, aber einige Untersuchungen zu Sicherheitsproblemen (für Chroot und Container) durchführen. Ether funktioniert besser als alles, was wir selbst tun können.

Antwort

Um die im Titel gestellte Frage zu beantworten Kurz gesagt:

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

Die Tests für ganzzahlige Vergleiche sind:

 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. 

Verwenden von e. G. < oder > führt einen ASCII-Ordnungsvergleich durch, sodass [[ 0100 < 100 ]] wahr ist.

Kommentare

  • Stephen Harris hatte Recht, dass ich einen Tippfehler gemacht hatte, und Sie hatten Recht, dass ich eine falsche Syntax verwendet hatte. Aber auch nach der Behebung beider Probleme funktioniert noch kein Skript. /:
  • Fügen Sie set -x oben in Ihrem Skript hinzu und führen Sie es mit diesem aus. Das zeigt Ihnen, was das Skript tatsächlich tut, damit Sie es mit dem vergleichen können, was denken es ' tut und entsprechend bearbeiten.

Antwort

Nun, ich habe den Tippfehler korrigiert, der das Programm sicherlich gebrochen hat, und Ich habe die Syntax des Operators korrigiert und sie definitiv gebrochen. Nachdem ich diese Probleme behoben hatte (und dies mag lächerlich erscheinen), führte ich die Operation valid=${#validCheck} manuell durch, um die Länge der Zeichenfolge für alle Fälle zu testen, und stellte fest, dass die Länge des Verzeichnisses war eigentlich 45 Zeichen, nicht 46. Ich fühle mich im Moment wie ein Trottel, aber ich bin froh, dass das Problem gelöst wurde, dass ich zu dringlicheren Funktionen übergehen kann. Vielen Dank für Ihre Korrekturen an meinen Tippfehlern und Richard für Ihren Vorschlag von Chroot-Gefängnis-Tools.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.