Turiu apvalkalo scenarijų su šiuo kodu:
var=`hg st -R "$path"`
if [ -n "$var" ]; then
echo $var
fi
Tačiau sąlyginis kodas visada įvykdomas, nes hg st
visada spausdina bent vieną naujos eilutės simbolį.
$var
pašalinti baltuosius ženklus (kaip trim()
PHP)?arba
Galėčiau naudoti sed arba AWK, bet norėčiau manyti, kad yra elegantiškesnis šios problemos sprendimas.
"Bash" turi funkciją, vadinamą parametrų išplėtimu, kuri, be kita ko, leidžia keisti eilutes pagal vadinamuosius šablonus (šablonai panašūs į reguliarias išraiškas, tačiau yra esminių skirtumų ir apribojimų). [flussence's originali eilutė: Bash turi reguliarias išraiškas, bet jos gerai paslėptos:]
Toliau parodyta, kaip iš kintamojo reikšmės pašalinti visą baltąjį tarpą (net iš vidaus).
$ 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