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