'de sınırlayıcı olarak dize kullanarak dize kesme İlk satırı yazdırdığında 1.0.0
sıyrılarak libcom.so
yazdırmanız gerekir. En iyi yolu bu ne yapmalı cut: the delimiter must be a single character
olarakKabuğu
#!/bin/sh
data=$(sed '0,/^__VERSION__$/d' "$0")
for d in $data
do
echo with version:
echo $d
echo "with no version"
d1="$(cut -d\.so -f1 <<< $d)"
#Need to save it in a variable for further processing
echo $d1
done
exit
__VERSION__
libcom.so.1.0.0
libclock.so.1.0.0
libstdc++.so.6.0.20
libxml.so.2.7.8
libmi.so.1.0.0
librt.so.6.6.5
libcsapi.so.1.0.0
hata dışarı? Sadece ilk .so
kadar dizeyi istiyorsanız
Not kullanabilirsiniz: o ölçüde daha yavaş olacağını rağmen
Alternatif olarak,
sed
kullanabilirsiniz Bu bir * bash betik değil. Varsayılan kabuğunuz bash olsa bile, '#!/Bin/sh' bir shebang kullanarak bash, birçok bash fonksiyonunun mevcut olmadığı * POSIX uyumluluk modunda * çalışmasına neden olur. bash için belirli bir yola (taşınabilir olmayan bir çözüm) işaret etmeyi tercih etmediğiniz sürece, # #/usr/bin/env bash 'makul bir varsayılan shebang'dır. – ghoti