echo -n "Enter [y/n] : " ; read opt
ATAU! (Nanti lebih baik)
read -p "[y/n]: " opt
Shebang #!/bin/sh
berarti Anda sedang menulis kode untuk Bourne Shell historis (masih ditemukan di beberapa sistem seperti Solaris menurut saya), atau lebih mungkin, bahasa shell standar seperti yang didefinisikan oleh POSIX. Artinya read -p
dan echo -n
keduanya tidak dapat diandalkan.
Solusi standar/portabelnya adalah:
printf 'Enter [y/n] : '
read -r opt
(-r
mencegah perlakuan khusus dari \
, sejak read
biasanya menerimanya sebagai kelanjutan baris saat berada di akhir baris.)
Jika Anda tahu bahwa skrip Anda akan dijalankan pada sistem yang memiliki Bash, Anda dapat mengubah shebang menjadi #!/bin/bash
(atau #!/usr/bin/env bash
) dan gunakan semua fitur Bash yang mewah. (Banyak sistem memiliki /bin/sh
disinkronkan ke bash
jadi ini berfungsi dengan baik, tetapi mengandalkan itu adalah praktik yang buruk, dan bash
sebenarnya menonaktifkan beberapa fiturnya sendiri saat dijalankan dengan nama sh
.)
Solusi:read -p "Enter [y/n] : " opt
Dari help read
:
-p prompt output the string PROMPT without a trailing newline before
attempting to read