Saya baru mengenal pemrograman bash. Saya telah membaca dua panduan yang bagus dan panjang, tetapi mereka membuat kekacauan di kepala saya tentang operator dan kata kunci.
Mana yang lebih umum dan banyak digunakan? Saya tidak tahu kapan harus menggunakan yang mana dan mengapa.
test
,[[ ]]
Atau[ ]
bahkan(( ))
$((exp))
atau$[exp]
-gt
atau>
,ge
atau lainnya>=
.- kapan harus menggunakan
<
dan>
atau( )
kapan kita harus menghindarinya dengan\:
\<
\(
dll. ==
atau=
(perbandingan string)
Saya tahu perbedaan mendasar antara [
dan [[
tetapi pertanyaan lain adalah misteri bagi saya.
Terima kasih sebelumnya
command-line
bash
programming
scripts
MikeD
sumber
sumber
Jawaban:
test
adalah shell built-in yang (jelas) menguji beberapa kondisi tertentu. Beberapa cangkang yang lebih tua membutuhkan perintah khusus. Jadi, Anda juga akan menemukan program di/usr/bin/test
.[
juga merupakan program untuk menguji beberapa kondisi. Perangkat lunak ini juga memerlukan braket penutup dan Anda dapat menemukannya di/usr/bin/[
.[[…]]
adalah alternatif untuktest
dan[
. Ini dikembangkan untuk shell Korn (ksh
). Tapi Anda juga menemukannya dalam versi Bash lebih besar dari 2 dan di Z Shell. Kurung ganda memiliki beberapa fitur bagus:-a
(DAN) atau-o
(ATAU) Anda dapat menggunakan&&
atau||
.=
dapat melakukan lebih banyak lagi.((…))
setara denganlet
. Jadi pada dasarnya((expression))
sama denganlet "expression"
. Namun denganlet
Anda dapat menggunakan lebih dari satu ekspresi, tetapi kurung ganda hanya memungkinkan satu ekspresi.$((…))
(dan juga$[…]
) melakukan perhitungan. Anda shell mencoba untuk menghitung ekspresi di dalam kurung dan mengganti ekspresi dengan hasilnya. Jadiecho $((1+1))
mengarah keecho 2
. Jadi cangkang Anda mencetak angka 2.Setiap kali Anda ingin membandingkan dua angka, Anda harus menggunakan opsi dengan tanda hubung dan dua huruf (
-ge
,-lt
dll.). Jika Anda ingin membandingkan string, Anda harus menggunakan=
atau!=
.Pertanyaan Anda tentang melarikan diri cukup sulit dijawab. Karena itu tergantung pada perangkat lunak yang Anda gunakan selain dari shell. Jadi yaitu
grep
dangrep -E
perlu pelarian yang berbeda. Ini juga halnya dengansed
,awk
dan lainnya. Jadi pilihan terbaik adalah dengan melihat halaman manualnya. Setelah beberapa waktu Anda terbiasa dan tahu kapan harus melarikan diri.sumber
if [ 2 -gt 1 ]; …
lebih umum, karena saya melihat ini lebih sering di skrip shell dan sejauh yang saya tahu ini sesuai dengan POSIX.