Передача входных данных в скрипт не работает должным образом - PullRequest
0 голосов
/ 04 ноября 2019

Это мой сценарий оболочки (automate_test.sh):

#!/bin/bash
cp -i ball1.rtf container
cp -i ball2.rtf container
cp -i ball3.rtf container

Это входной файл для этого сценария (in_test.txt):

n
y
n

И яВыполнение этой команды:

cat "in_test.txt" | ./automate_test.sh

Папка с именем «container» уже содержит файлы с именами «ball1.rtf», «ball2.rtf» и «ball3.rtf». Ожидаемое поведение - перезаписывать только ball2. Но вывод выглядит следующим образом:

overwrite container/ball1.rtf? (y/n [n]) not overwritten
overwrite container/ball2.rtf? (y/n [n]) not overwritten
overwrite container/ball3.rtf? (y/n [n]) not overwritten

1 Ответ

1 голос
/ 05 ноября 2019

Вместо того, чтобы пытаться «разговаривать» с интерактивной программой, используя статический файл, рассмотрите возможность сообщить «cp», какой файл переопределить, с помощью параметров командной строки:

  • cp -f / - force, чтобыпринудительно перезаписать существующий файл.
  • cp -n / - no-clobber, чтобы оставить существующий файл без изменений.

Помните, что cp не будет запрашивать перезапись, если файл не существует, что приведет к несоответствию между вопросами и ответами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...