2014-06-15 23 views

cevap

19
echo a(echo b)c 

, bunları çıkmalısınız:

echo "a"(echo b)"c" 

senin alt komutu yeni satır olma ihtimali varsa, balık 2.3 itibarıyla, kaydetmek ve geri yüklemek zorunda $ IFS:

set -l IFS 
echo "a"(cat ~/file.txt)"c" 
set -e IFS 

Bu durumda, string nihayet bu durumu ele alabilecektir.

+1

Bu, bir şekilde tüm yeni satır karakterlerini yutacak ve eşdeğer gibi görünmeyecektir. Minimal örnek: Verilen "echo -e" a \ nb "> x' sonra bash' echo "$ (cat x)" 'doğru olanı yapar, oysa balık ekoyu (cat x) '; bash 'echo $ (cat x)' için tırnak işaretleri olmadan eşdeğer olacaktır. – Debilski

+0

@ridiculous_fish, bash'ın "" $() "sonucunu nasıl üreteceğinizi açıklayabilir misiniz? Balık 2.3.0 ile test edildi ve hala Debilski'nin çıktısını aldım. Şimdiden teşekkürler. – berbt

+0

Yeni satırların nasıl işleneceğini açıklamak için düzenleyin. –

İlgili konular