Terkadang saat membuat persyaratan, saya memerlukan kode untuk tidak melakukan apa pun, misalnya, di sini, saya ingin Bash tidak melakukan apa pun ketika $a
lebih besar dari "10", cetak "1" jika $a
kurang dari "5", jika tidak, cetak "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Ini membuat kesalahan. Apakah ada perintah yang tidak akan melakukan apa pun dan juga tidak memperlambat skrip saya?
bash
conditional
noop
Desa
sumber
sumber
true
. Itu dibangun ke dalam shell, dan tidak melakukan apa-apa.:
ditulis oleh seseorang di tim saya, saya minta mereka mengubahnya.true
dalam konteks non-kondisional, saya minta mereka mengubahnya.if true
baik-baik saja,then true
sepertinya salah.if ! condition; then do something; fi
bukanif condition; then :; else do something; fi
.Anda mungkin bisa menggunakan
true
perintah:Alternatif, dalam contoh kasus Anda (tetapi tidak harus di mana-mana) adalah memesan ulang jika / yang lain:
sumber
true
danfalse
secara efektif tidak-ops sejauh menyangkut skrip, tetapi pada prinsipnya mereka bisa bercabang di beberapa shell yang menerima sintaks ini jadi mungkin:
lebih baik.true
danfalse
built-in. Untuk kerang yang lebih tua,true
,false
, dan bahkan:
mungkin perintah eksternal (meskipun Anda mungkin akan melihat yang terakhir hanya dalam sangat kerang tua).:
hanya karena lebih eksplisit apa tujuannyaMeskipun saya tidak menjawab pertanyaan awal yang menyepakati perintah no-op, banyak (jika tidak sebagian besar) masalah ketika orang mungkin berpikir " di cabang ini saya tidak melakukan apa-apa " dapat dilewati dengan hanya menata ulang logika sehingga cabang ini menang tidak terjadi.
Saya mencoba memberikan aturan umum dengan menggunakan contoh OPs
kita harus menghindari cabang di mana
$a
mendapat lebih dari 10, sehingga$a < 10
kondisi umum dapat diterapkan satu sama lain, mengikuti kondisi.Secara umum, ketika Anda mengatakan melakukan apa-apa ketika X , maka ulang kata-kata sebagai menghindari cabang di mana X . Biasanya Anda dapat membuat penghindaran terjadi hanya dengan meniadakan X dan menerapkannya pada semua kondisi lainnya.
Jadi contoh OP dengan aturan yang diterapkan dapat direstrukturisasi sebagai:
Hanya variasi di atas, melampirkan segala sesuatu dalam
$a < 10
kondisi:(Untuk contoh khusus ini, restrukturisasi @Flimzys tentu saja lebih baik, tetapi saya ingin memberikan aturan umum untuk semua orang yang mencari cara untuk tidak melakukan apa-apa.)
sumber
echo "put stuff here"
akan merusak beberapa penggunaan non-login (mis. Scp rusak), dan hanya spasi / komentar yang menyebabkan kesalahan runtime.