Sejarah campuran echo
berarti operasi defaultnya bervariasi dari shell ke shell. POSIX menentukan bahwa hasil dari echo
adalah "implementasi-ditentukan" jika argumen pertama adalah -n
atau argumen apa pun yang berisi garis miring terbalik.
Lebih dapat diandalkan untuk menggunakan printf
(baik sebagai perintah bawaan atau perintah eksternal) yang perilakunya didefinisikan dengan lebih baik:tanda garis miring terbalik gaya C dan penentu format didukung dalam string format (argumen pertama).
printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar
Anda dapat mengontrol perluasan urutan escape backslash dari bash echo
perintah bawaan dengan xpg_echo
opsi shell.
Letakkan di bagian atas bash apa pun skrip untuk membuat echo
memperluas tanda garis miring terbalik secara otomatis tanpa harus menambahkan -e
untuk setiap perintah gema.
shopt -s xpg_echo
echo 'foo\nbar'
Praktik yang disarankan adalah menggunakan printf
untuk semua skrip baru.
printf '%s\n%s\n' "Hello" "World"
printf '%s\n' "Hello\nWorld"
Saat Anda menggunakan bash myfile.sh
, Bash dijalankan dalam mode "batch", pada terpisah proses, dan tidak baca profil atau rcfile-nya.
Saat Anda menggunakan . myfile.sh
, file tersebut bersumber oleh proses shell saat ini (seolah-olah isinya diketik oleh Anda), oleh karena itu ia melihat alias yang Anda tetapkan saat ini.
Secara umum, adalah Ide yang Sangat Buruk untuk menulis skrip yang bergantung pada konfigurasi shell tertentu, terutama alias, kecuali jika Anda mendefinisikannya dalam skrip diri. (Tidak pernah mengandalkan .bashrc
pengguna , bahkan jika itu milik Anda sendiri.)