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

  • Showtime

    Showtime

    21 HAZİRAN 2006
  • Skittles Page

    Skittles Pag

    28 Mart 2011
  • TrenchTech Computer Repair Tutorials

    TrenchTech C

    19 EYLÜL 2014