GNU/Linux >> Znalost Linux >  >> Linux

Shell Script, čtěte na stejném řádku po ozvěně zprávy

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

Linux
  1. Který Shell Interpreter spouští skript s No Shebang?

  2. Jak předat argument příkazového řádku do skriptu Shell?

  3. Pokračování bash line po &&a || Zdokumentováno?

  1. Je Shell přenosný ke spuštění příkazu na stejném řádku po přiřazení proměnné?

  2. Odezva textu po příkazu Curl na stejném řádku?

  3. Jak zopakovat nový řádek ve skriptech Bash Shell

  1. Bash Script - Jak číst uživatelský vstup

  2. Po přihlášení spusťte bash skript

  3. Zabijte program poté, co vypíše daný řádek ze skriptu shellu