представление нескольких файлов от сценария оболочки до стандартного входа

дракон NaturallySpeaking , кажется, поддерживает вход MP3.

, Если Вы хотите версия с открытым исходным кодом (я думаю, существуют некоторые проекты интеграции Звездочки на основе этого).

6
задан 28 September 2009 в 14:23
поделиться

5 ответов

Очевидно, вы можете использовать cat для отправки двух файлов в стандартный ввод программы, но это, вероятно, не то, что вам нужно:

$ cat file1.txt file2.txt | myprogram

В приведенном выше случае myprogram не сможет определить, где заканчивается file1.txt и начинается file2.txt , если только у них не было определенного форматирования, и он не следил за потоком для определенного форматирования, которое означает конец или начало файла.

Не существует стандартного способа отправки нескольких потоков на стандартный ввод. По сути, на стандартный ввод поступает только один поток.

Вы, вероятно, структурируете свой сценарий так, чтобы он принимал несколько аргументов в командной строке и внутренне открывал и обрабатывал их по одному. То есть вы бы назвали это так:

$ myprogram file1.txt file2.txt
3
ответ дан 17 December 2019 в 04:49
поделиться

Скорее всего, можно было бы использовать ожидать .

0
ответ дан 17 December 2019 в 04:49
поделиться

Джонатан Леффлер говорит в своем комментарии, что мое решение неверно . Может быть это. Я на самом деле не проверял это полностью. Но пусть это будет здесь только для информации, что это, по крайней мере, неправильный ответ.


Bash может отображать управляющий символ с помощью своей команды echo . EOF - это Cd , как вы уже отметили, поэтому давайте воспользуемся подоболочкой:

$ ( cat file1.txt ; echo -e '\cD' ; cat file2.txt ) | myprogram

Это будет выполнять команды в круглых скобках и выводить их все по конвейеру, как если бы это было отдельная программа.

Если вы не уверены, что она работает правильно, попробуйте следующее:

$ (echo "Hello" ; echo -e '\cD' ; echo "bash") | tee
0
ответ дан 17 December 2019 в 04:49
поделиться

Должен ли быть один вызов? Если нет:

for file in file1 file2 file3; do myprogram < $file; done
2
ответ дан 17 December 2019 в 04:49
поделиться

Я написал простую программу Python для моделирования поведения программы. вы описываете. Как минимум, это дает нам возможность говорить об одном и том же вместо того, чтобы предполагать, как работает ваша программа. (Конечно, если ваша программа на самом деле работает не так, как я описываю здесь, поправьте меня.)

#!/usr/bin/python

def read_a_file():
    print('Type the contents of a file now.')
    while True:
        try:
            s = raw_input('>')
        except EOFError:
            break

read_a_file()
read_a_file()
print('We have now read two files. Quitting.')

Вы можете запустить этот сценарий, ввести содержимое первого файла, нажать CTRL-D, ввести содержимое второго файла, нажмите CTRL-D, и программа завершится. Похоже, это именно то поведение, которое вы описываете.

Моей первой мыслью было использовать expect, как предполагал хаос. Однако я не могу найти никакой поддержки в ожидании передачи содержимого файла в процесс. (Я предполагаю, что содержимое файлов каждый раз разное. Если они одинаковы, то ожидание будет работать, просто поместив содержимое файлов в сценарий ожидания.)

Я должен отметить, что я нет значит ожидать эксперта; может быть способ сделать это, который для меня не очевиден.

Моей второй мыслью было написать скрипт Python, который запускал вашу программу и передавал ей содержимое файлов и символы EOF. Однако комментарии Джонатана Леффлера заставили меня подумать, что повторение символов EOF не сработает.

Моя третья мысль чертовски бессмысленна. Вы можете написать сценарий, который создает сценарий ожидания, вставляя содержимое файлов в сценарий ожидания, а затем выполняя сценарий ожидания. Я подозреваю, что это сработает.

просто поместив содержимое файлов в сценарий ожидания.)

Я должен отметить, что я ни в коем случае не эксперт в области ожидания; может быть способ сделать это, который для меня не очевиден.

Моей второй мыслью было написать сценарий Python, который запускал вашу программу и передавал ей содержимое файлов и символы EOF. Однако комментарии Джонатана Леффлера заставили меня подумать, что повторение символов EOF не сработает.

Моя третья мысль чертовски бессмысленна. Вы можете написать сценарий, который создает сценарий ожидания, вставляя содержимое файлов в сценарий ожидания, а затем выполняя сценарий ожидания. Я подозреваю, что это сработает.

просто поместив содержимое файлов в сценарий ожидания.)

Я должен отметить, что я ни в коем случае не эксперт в области ожидания; может быть способ сделать это, который для меня не очевиден.

Моей второй мыслью было написать скрипт Python, который запускал вашу программу и передавал ей содержимое файлов и символы EOF. Однако комментарии Джонатана Леффлера заставили меня подумать, что повторение символов EOF не сработает.

Моя третья мысль чертовски бессмысленна. Вы можете написать сценарий, который создает сценарий ожидания, вставляя содержимое файлов в сценарий ожидания, а затем выполняя сценарий ожидания. Я подозреваю, что это сработает.

Вторая моя мысль заключалась в том, чтобы написать сценарий Python, который запускал бы вашу программу и передавал ей содержимое файлов и символы EOF. Однако комментарии Джонатана Леффлера заставили меня подумать, что повторение символов EOF не сработает.

Моя третья мысль чертовски бессмысленна. Вы можете написать сценарий, который создает сценарий ожидания, вставляя содержимое файлов в сценарий ожидания, а затем выполняя сценарий ожидания. Я подозреваю, что это сработает.

Второй моей мыслью было написать сценарий Python, который запускал бы вашу программу и передавал ей содержимое файлов и символы EOF. Однако комментарии Джонатана Леффлера заставили меня подумать, что повторение символов EOF не сработает.

Моя третья мысль чертовски бессмысленна. Вы можете написать сценарий, который создает сценарий ожидания, вставляя содержимое файлов в сценарий ожидания, а затем выполняя сценарий ожидания. Я подозреваю, что это сработает.

а затем выполнение ожидаемого сценария. Я подозреваю, что это сработает.

а затем выполнение ожидаемого сценария. Я подозреваю, что это сработает.

0
ответ дан 17 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: