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

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • metal571

    metal571

    30 Mayıs 2006
  • tseyina

    tseyina

    2 AĞUSTOS 2006