Operace předlisku v bash pouze v případě, že proměnná je menší než druhá proměnná [uzavřeno]

Uzavřeno. Tato otázka je mimo téma . Momentálně nepřijímá odpovědi.

Komentáře

  • V obou skriptech máte překlep; valid=${#vaidCheck} – To říká vaidCheck; by měl být validCheck
  • Vypadá to, že se snažíte vytvořit chroot vězení nebo kontejner. Existuje několik dobrých nástrojů, které vám to umožní. Používání nástrojů na nízké úrovni je složité a zbytečné; podívejte se na nástroj na vysoké úrovni, jako je ukotvitelný panel. Dosud jsem nepoužíval ukotvitelný panel, ale mohl by být tím, co potřebujete. Použil jsem chroot vězeňské nástroje a fungují dobře, ale prozkoumají bezpečnostní problémy (pro chroot a kontejnery). Ether bude fungovat lépe než všechno, co dokážeme sami.

Odpověď

Odpovědět na otázku položenou v názvu stručně:

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

Testy pro celočíselné srovnání jsou:

 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. 

Použití e. G. < nebo > provede porovnání objednávek ASCII, takže [[ 0100 < 100 ]] bude pravda.

Komentáře

  • Stephen Harris měl pravdu, že jsem vložil překlep, a vy jste měli pravdu, že jsem použil nesprávnou syntaxi. Ani po opravě obou problémů však skript ještě nefunguje. /:
  • Přidejte set -x do horní části skriptu a spusťte jej s tímto umístěním. To vám ukáže, co skript ve skutečnosti dělá, abyste jej mohli porovnat s tím, co si myslíte dělá ' a podle toho je upravte.

Odpověď

Opravil jsem překlep, který jistě porušoval program, a Opravil jsem syntaxi operátoru a také ji rozhodně porušil. Nicméně (a to se může zdát směšné), jakmile jsem tyto problémy opravil, provedl jsem ručně operaci valid=${#validCheck} , abych pro každý případ otestoval délku řetězce a zjistil, že délka adresáře bylo ve skutečnosti 45 znaků, ne 46. Cítím se teď jako droga, ale jsem rád, že problém byl vyřešen, že mohu přejít k naléhavějším funkcím. Děkuji vám oběma za opravy mých překlepů a děkuji vám Richardovi za váš návrh nástrojů chroot vězení.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *