Proses ikame böylece tüm POSIX kabuk bunu desteklemez, POSIX tarafından belirtilmemişse, sadece bazı kabukları gibi bash
, zsh
, ksh88
,ksh93
destek.
In Centos
sistemine /bin/sh
karşı sembolik bağdır /bin/bash
. Ne zaman bash
adıyla çağrılır sh
, bash
POSIX modu (girer Bash Başlatma Dosyaları - sh ismiyle çağrıldığında ). Posix modunda,process substitution
desteklenmez, sözdizimi hatasına neden olur.
bash
Doğrudan çağırırsanız komut dosyası çalışmalıdır bash test.sh
. Değilse, belki bash
posix moduna girmiştir. Bu, bağımsız değişken bash
ile başlatırsanız --posix
veya başlatma POSIXLY_CORRECT
sırasında değişken ayarlanırsa oluşabilir bash
:
$ bash --posix test.sh
test.sh: line 54: syntax error near unexpected token `('
test.sh: line 54: `paste <(printf "%s\n" "TOP")'
$ POSIXLY_CORRECT=1 bash test.sh
test.sh: line 54: syntax error near unexpected token `('
test.sh: line 54: `paste <(printf "%s\n" "TOP")
Veya bash
ile inşa edilmiştir--enable-strict-posix-default
seçeneği .
Burada, işlem değiştirmeye ihtiyacınız yoktur, standart kabuk borularını kullanabilirsiniz:
printf "%s\n" "TOP" | paste -
-
paste
stdin'den veri okumayı söylemenin standart yoludur . Bazılarıylapaste
uygulamalarda, bu standart olmasa da atlayabilirsiniz.
Yararlı olacağı yer, aşağıdaki gibi birden fazla komutun çıktısını yapıştırırken:
paste <(cmd1) <(cmd2)
Destekleyen sistemlerde /dev/fd/n
, aşağıdakilerle yapılabilir sh
:
{ cmd1 4<&- | { cmd2 3<&- | paste /dev/fd/3 -; } 3<&0 <&4 4<&-; } 4<&0
( <(...)
dahili olarak ne yapar).
dash
Yerinebash
).