echo -n "Enter [y/n] : " ; read opt
NEBO! (Později je lepší)
read -p "[y/n]: " opt
Shebang #!/bin/sh znamená, že píšete kód buď pro historický Bourne shell (stále se nachází na některých systémech, jako je Solaris, myslím), nebo pravděpodobněji pro standardní jazyk shellu, jak je definován v POSIX. To znamená, že read -p a echo -n obě jsou nespolehlivé.
Standardní/přenosné řešení je:
printf 'Enter [y/n] : '
read -r opt
(-r zabraňuje speciálnímu zacházení s \ , od read normálně to přijímá jako pokračování řádku, když je na konci řádku.)
Pokud víte, že váš skript bude spuštěn na systémech s Bash, můžete změnit shebang na #!/bin/bash (nebo #!/usr/bin/env bash ) a používejte všechny efektní funkce Bash. (Mnoho systémů má /bin/sh symbolicky odkazováno na bash takže to funguje tak či tak, ale spoléhat se na to je špatný postup a bash ve skutečnosti deaktivuje některé své vlastní funkce, když je spuštěn pod jménem sh .)
Řešení:read -p "Enter [y/n] : " opt
Od help read :
-p prompt output the string PROMPT without a trailing newline before
attempting to read