SORU
15 Aralık 2008, PAZARTESİ


Nasıl bir Bash değişken boşluk kırpmak mı?

Bu kod ile bir kabuk var:

var=`hg st -R "$path"`
if [ -n "$var" ]; then
    echo $var
fi

Ama koşullu kod her zaman hg st her zaman en az bir yeni satır karakteri yazdırır çünkü yürütür.

  • $var boşluk şerit için basit bir yol (PHP 9 *gibi) var mı?

ya

  • Bu konu ile ilgili standart bir yolu var mı?

sed AWK, kullanabilirim ama bu soruna daha iyi bir çözüm olduğunu düşünüyorum.

CEVAP
12 Temmuz 2010, PAZARTESİ


Bir değişken lider, firar içeren tanımlayalım ve ara boşluk:

FOO=' test test test '
echo -e "FOO='${FOO}'"
# > FOO=' test test test '
echo -e "length(FOO)==$(echo -ne "${FOO}" | wc -m)"
# > length(FOO)==16

Echo komutu seçeneği -n dönüş bir karakter ekleme ve wc -m ek bir karakter sayısı neden önlemek için kullanılır.


Nasıl boşluk ([[:space:]] ile belirtilen) kaldırmak için:

FOO=' test test test '
FOO_NO_WHITESPACE="$(echo -e "${FOO}" | tr -d '[[:space:]]')"
echo -e "FOO_NO_WHITESPACE='${FOO_NO_WHITESPACE}'"
# > FOO_NO_WHITESPACE='testtesttest'
echo -e "length(FOO_NO_WHITESPACE)==$(echo -ne "${FOO_NO_WHITESPACE}" | wc -m)"
# > length(FOO_NO_WHITESPACE)==12

Nasıl lider boşluk sadece kaldırmak için:

FOO=' test test test '
FOO_NO_LEAD_SPACE="$(echo -e "${FOO}" | sed -e 's/^[[:space:]]*//')"
echo -e "FOO_NO_LEAD_SPACE='${FOO_NO_LEAD_SPACE}'"
# > FOO_NO_LEAD_SPACE='test test test '
echo -e "length(FOO_NO_LEAD_SPACE)==$(echo -ne "${FOO_NO_LEAD_SPACE}" | wc -m)"
# > length(FOO_NO_LEAD_SPACE)==15

Nasıl sondaki boşluk sadece: kaldırmak için

FOO=' test test test '
FOO_NO_TRAIL_SPACE="$(echo -e "${FOO}" | sed -e 's/[[:space:]]*$//')"
echo -e "FOO_NO_TRAIL_SPACE='${FOO_NO_TRAIL_SPACE}'"
# > FOO_NO_TRAIL_SPACE=' test test test'
echo -e "length(FOO_NO_TRAIL_SPACE)==$(echo -ne "${FOO_NO_TRAIL_SPACE}" | wc -m)"
# > length(FOO_NO_TRAIL_SPACE)==15

Her iki baştaki ve sondaki boşlukları--nasıl Kaldır seds zinciri:

FOO=' test test test '
FOO_NO_EXTERNAL_SPACE="$(echo -e "${FOO}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
echo -e "FOO_NO_EXTERNAL_SPACE='${FOO_NO_EXTERNAL_SPACE}'"
# > FOO_NO_EXTERNAL_SPACE='test test test'
echo -e "length(FOO_NO_EXTERNAL_SPACE)==$(echo -ne "${FOO_NO_EXTERNAL_SPACE}" | wc -m)"
# > length(FOO_NO_EXTERNAL_SPACE)==14

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • Gimpology.com Video Tutorials

    Gimpology.co

    3 ŞUBAT 2008