true
tidak dibangun ke dalam shell Bourne. :
selalu (itu adalah cara untuk memasukkan komentar sebelum #
diperkenalkan).
Itu, dan karena itu lebih pendek untuk jenis mungkin adalah alasan utama orang memilih :
lebih true
.
Perhatikan perbedaan lain dalam shell POSIX (untuk bash
, hanya dalam mode POSIX): sementara true
builtin biasa (bahkan tidak harus builtin), :
adalah builtin khusus . Itu memiliki beberapa implikasi, yang sebagian besar tidak mungkin berdampak pada kasus khusus ini:
Jika suatu :
perintah gagal, termasuk karena pengalihan yang gagal, itu menyebabkan shell keluar. Dalam praktiknya, itu mungkin tidak akan membuat perbedaan kecuali Anda meneruskan pengalihan:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
di var=value :
, var
tetap disetel ke value
setelah :
pengembalian, bukan dalam kasus true
:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
Juga mencatat bahwa || true
karya-karya di kerang dari rc
dan csh
keluarga tetapi tidak || :
(tapi tidak untuk membatalkan set -e
di csh
).
|| :
tidak sama dengan :
. Ini berarti atau menjalankan :
sebaliknya (yaitu, jika pipa sebelumnya gagal).
set -e
false
Akan menyebabkan shell keluar karena set -e
dan false
memiliki status keluar yang tidak nol (gagal). The set -e
efek dibatalkan jika perintah yang kembali status exit non-nol digunakan sebagai kondisi seperti di:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :
hanya membatalkan set -e
. false || :
membatalkan set -e
dan mengatur status keluar menjadi 0
lebih idiomatis untuk mengatakan bahwa kami ingin mengabaikan kode keluar kegagalan perintah. Sebagian besar akan berpendapat bahwa || true
itu lebih terbaca (menyampaikan niat lebih jelas).
||:
(tanpa ruang) juga berlaku di bash. Itu melakukan hal yang sama dengan|| :
atau|| true
.