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

  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006