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 sed
s 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ş:
Nasıl boşluk (sekme dahil) kırpmak mı?...
Nasıl bir BASH değişken bir komut çıkt...
Nasıl Bash bir değişken için heredoc b...
Nasıl herhangi bir komut dosyası düzen...
Nasıl dosyayı bir hex dökümü sadece he...