Dalam bash GNU bash, versi 4.2.46(2)-release (x86_64-redhat-linux-gnu) atau yang stabil, Anda dapat menggunakan # atau : untuk berkomentar

Apa perbedaan antara 2 ini dan kegunaan?

Saya perhatikan komentar # membuat seluruh baris menjadi komentar, sedangkan cakupan/efek : hanya sampai mencapai karakter \n atau ; pertama (dalam baris tertentu).

[gigauser@someserver ~]$ # this is a # comment; echo this will not print
[gigauser@someserver ~]$ : this is a : comment; echo this will print
this will print

Dalam kode berikut, mengapa 2 komentar terakhir tidak berfungsi seperti yang diharapkan untuk memperlakukannya sebagai komentar (walaupun :: berfungsi jika muncul setelah : ?

[gigauser@someserver ~]$ #
[gigauser@someserver ~]$ ##
[gigauser@someserver ~]$ ####
[gigauser@someserver ~]$ ####
[gigauser@someserver ~]$ : : : : : : : : : :
[gigauser@someserver ~]$ #
[gigauser@someserver ~]$ # # #
[gigauser@someserver ~]$ ####
[gigauser@someserver ~]$
[gigauser@someserver ~]$ :
[gigauser@someserver ~]$ : :
[gigauser@someserver ~]$ : : : : : : : : : : : : ::::::::
[gigauser@someserver ~]$ : : :::::
[gigauser@someserver ~]$
[gigauser@someserver ~]$
[gigauser@someserver ~]$ ::
-bash: ::: command not found
[gigauser@someserver ~]$ :::::
-bash: :::::: command not found
[gigauser@someserver ~]$
0
AKS 12 Mei 2021, 19:43

1 menjawab

Jawaban Terbaik

: sama sekali bukan komentar, itu adalah perintah yang tidak melakukan apa-apa. Perbedaan yang paling penting adalah karena ini adalah perintah, sintaks shell apa pun setelahnya akan ditafsirkan dan ditindaklanjuti. Sebagai contoh:

: Check whether x > 1

Di sini bagian > 1 akan ditafsirkan sebagai pengalihan output, jadi itu akan membuat file bernama "1" dan mengarahkan output (kosong) ke sana. Jika sudah x < 1 itu akan mencoba membuka "1" untuk input dan (mungkin) gagal.

: Check permissions on the user's home directory

Di sini ' akan ditafsirkan sebagai memulai string yang dikutip tunggal (yang akan menjadi argumen untuk :), dan mungkin akan menimbulkan kekacauan dengan cara sisa skrip diuraikan.

: Test for completion (again)

Menghasilkan -bash: syntax error near unexpected token `('

Perintah : terkadang berguna jika Anda ingin ekspansi parameter dilakukan (karena efek sampingnya), tetapi tidak ingin melakukan apa pun dengan hasilnya.

: ${VAR:=defaultvalue}

Di sini, jika $VAR belum disetel ke sesuatu yang tidak kosong, pengubah := akan menyetelnya ke "nilai default". Ini pada dasarnya adalah singkatan untuk

if [ -z "$VAR" ]; then
    VAR=defaultvalue
fi
3
Gordon Davisson 12 Mei 2021, 17:59