POSIX sh ve Bash'te farklı şeyler yapan bir kod :
hello &> world
Bunun sizin için "geçersiz" olup olmadığını bilmiyorum.
Bash, bu standart çıktı ve standart hata hem yönlendirmeleri gelen hello
dosya içine world
. POSIX'te sh
, hello
arka planda çalışır ve ardından world
keserek boş bir yeniden yönlendirme yapar (kısaltılmış olarak kullanılır & >
).
Bash uzantılarının altında çalıştıklarında işlerini yapacağı bash
ve saf POSIX'te farklı etkileri olacağı birçok başka durum vardır sh
. Örneğin, ayraç genişletme başka bir şeydir ve Bash'in POSIX modunda da aynı şekilde çalışır, aynı değildir.
Statik sözdizimi hataları giderilirken, Bash, POSIX tarafından belirtilmeyen, hem geçerli bir POSIX kabuk kodu, ancak bir Bash sözdizimi hatası, hem de sözdizimi hatalarıyla sonuçlanabilecek çeşitli POSIX uyumsuzluk hataları geçmişi gibi ayrılmış kelimeleri (gibi [[
ve time
) [[ x
içerir. bu sorudan olan gibi :
x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file
Yalnızca sözdizimi-hataları, önemli olduğu durumlar için "geçersiz" ifadesinin oldukça tehlikeli bir tanımıdır, ancak olduğu yerde.