2016-09-23 5 views
1

Содержимое моего удаленного файла:трубы Код для ш - Скрипт не ожидая команды чтения

#!/bin/sh 
read foo && echo "$foo" 

Что я делаю на месте в моем терминале:

$ curl -fLSs http://example.com/my-remote-file.sh | sh 

Что Я ожидаю:

Загруженный скрипт должен пользователь вводит что-то и ждет ввода пользователей.

Что происходит на самом деле:

Загруженный сценарий пропускает команду read и продолжает выполнение.

Вопрос:

Как я могу подсказать пользователю ввести что-то из сценария, который загружается через curl? Я знаю, что работает sh <(curl -fLSs http://example.com/my-remote-file.sh), но это не совместимо с POSIX, и я хотел бы достичь этого.

+0

Попробуйте положить хижину в качестве первой линии удаленного файла ... '#/bin/bash' или аналогичной! , –

+0

@MarkSetchell: В моем удаленном файле есть, конечно, shebang. Но я добавлю его в свой фрагмент кода, чтобы сделать это более понятным. – headacheCoder

ответ

2

Проблема в том, что stdin читает с curl, а не с клавиатуры. Вы должны изменить свой сценарий, чтобы инструктировать его прочитать конкретно от терминала, например:

read input < /dev/tty 
echo $input 
+0

На самом деле это не отвечает на мой вопрос, так как я не хотел использовать 'bash'. – headacheCoder

+0

Это работает ... 'echo date | sh' –

+1

У меня было другое мнение об этом ... пожалуйста, посмотрите еще раз. –

 Смежные вопросы

  • Нет связанных вопросов^_^