Mám shell skript s týmto kódom:
var=`hg st -R "$path"`
if [ -n "$var" ]; then
echo $var
fi
Ale podmienený kód sa vždy vykoná, pretože hg st
vždy vypíše aspoň jeden znak nového riadku.
$var
(ako trim()
v PHP)?alebo
Mohol by som použiť sed alebo AWK, ale rád by som si myslel, že existuje elegantnejšie riešenie tohto problému.
Bash má funkciu rozšírenie parametrov, ktorá okrem iného umožňuje nahradiť reťazec na základe takzvaných vzorcov (vzory sa podobajú regulárnym výrazom, ale sú tu zásadné rozdiely a obmedzenia). [flussence's original line: Bash má regulárne výrazy, ale'sú dobre skryté:]
Nasledujúci príklad ukazuje, ako z hodnoty premennej odstrániť všetky biele miesta (aj z vnútra).
$ var='abc def'
$ echo "$var"
abc def
# Note: flussence's original expression was "${var/ /}", which only replaced the *first* space char., wherever it appeared.
$ echo -n "${var//[[:space:]]/}"
abcdef