Selain jawaban lain, yang memberi tahu Anda bagaimana melakukan apa yang Anda inginkan, saya mencoba menjelaskan apa yang salah (yang Anda inginkan.
Di Bash, if
harus diikuti dengan perintah. Jika kode keluar dari perintah ini sama dengan 0, maka then
bagian dieksekusi, atau else
bagian jika ada yang dieksekusi.
Anda dapat melakukannya dengan perintah apa pun seperti yang dijelaskan dalam jawaban lain: if /bin/true; then ...; fi
[[
adalah perintah bash internal yang didedikasikan untuk beberapa tes, seperti keberadaan file, perbandingan variabel. Demikian pula [
adalah perintah eksternal (biasanya terletak di /usr/bin/[
) yang melakukan tes kira-kira sama tetapi perlu ]
sebagai argumen akhir, yang mengapa ]
harus diisi dengan ruang di sebelah kiri, yang tidak demikian halnya dengan ]]
.
Di sini Anda tidak perlu [[
juga [
.
Hal lain adalah cara Anda mengutip sesuatu. Dalam bash, hanya ada satu kasus di mana pasangan kutipan bersarang, yaitu "$(command "argument")"
. Tetapi di dalam 'grep 'SomeString' $File'
kamu hanya ada satu kata, karena 'grep '
ini adalah unit yang dikutip, yang digabungkan dengan SomeString
dan kemudian digabungkan dengan ' $File'
. Variabel $File
bahkan tidak diganti dengan nilainya karena penggunaan tanda kutip tunggal. Cara yang tepat untuk melakukannya adalah grep 'SomeString' "$File"
.