Portál AbcLinuxu, 10. května 2025 05:36
[ 1 = 1 ]
" sice vypadá jako nějaká konstrukce jazyka shellu, ale to je jen zdání. Ve skutečnosti je "[
" jen alias pro příkaz test
. V případě bashe jsou oba implementovány jako builtin, pro jiné shelly jde o normální příkazy, které podle okolností najdete v /bin
nebo /usr/bin
. Aby ten příkaz dělal co má, potřebuje dostat správným způsobem oddělené parametry "1
", "=
", "1
" (a v případě "[
" ještě závěrečný "]
", který ignoruje). Proto v "podmínce" nelze beztrestně vynechávat mezery.
#!/bin/bash
a takto to dělat ve všech skriptech, které nechcete mít multi-interpretové
P.S. to cd
tam máte zbytečně, stačí to napsat jako /cesta/k/binárce/binárka
sh je historický shell, který se dnes nepoužívá a místo něj se používají programy (bash, dash), které umí staré sh emulovat.Nie cely svet je Linux, pozor.
A tudíž řešení: změnit úvodní řádek na #!/bin/bash
Tym sa spolahlivo odrovna prenostitelnost napr. na BSD. Ked uz, tak
#! /usr/bin/env bash
P.S. toCo moze a nemusi byt pravda. Zatial cocd
tam máte zbytečně, stačí to napsat jako/cesta/k/binárce/binárka
/cesta/k/binarke/binarkaponecha nezmeneny pracovny adresar, tak
cd /cesta/k/binarke ./binarkapracovny adresar zmeni.
#! /usr/bin/env bashje příspěvek do soutěže o nejzbytečnější spuštění dalšího procesu. O portabilitu se postará instalátor přepsáním shbangů při instalaci, je-li to nutné.
cd
týče, ta je určitě validní
Formulace jsou nepřesné, ale myslím že vzhledem k úrovni tazatele myslím dostatečné...Myslim, ze ani neskuseneho pouzivatela netreba zbytocne pliest skreslenymi informaciami. Zjednodusene informacie su namieste, skreslene nie.
Mimochodem, BSD používá původní Sh?Ako interaktivny shell pouziva BSD
[t]csh
, co je v porovnani s Bourne[-Again] shellom absolutne odlisne udelatko. Zakladny system obsahuje sh
, ktory sa hojne vyuziva na skriptovanie, rovnako ako v Linuxe. Zakladny system ale neobsahuje bash
; ten je povazovany za externu aplikacu. Ak sa doinstaluje z balikov alebo portov, instaluje sa do /usr/local/bin/bash
; preto ta namietka voci pevnej ceste k bash-u v shebangu.
cd
týče, ta je určitě validní
sh
. A bez nich si s tím neporadí ani bash - přesněji řečeno bude to sice dělat to, co tazatel zamýšlel, ale jen šťastnou shodou okolností (doporučuji vyzkoušet s 1=0 a rozmyslet si, proč je i v tomto případě podmínka považována za splněnou).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.