Выполнение {команда vs через скрипт bash} + перенаправление вывода

Я не уверен, что здесь один или два вопроса:

file /usr/bin/line1

wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1

file /usr/bin/line2

!#/usr/bin/bash
wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1
[d3 ] Команда Wine отлично работает, но когда я запускаю /usr/bin/line1, я получаю:

: ambiguous redirect1: 1

И когда я запускаю /usr/bin/line2, я получаю:

wine: bad interpreter: No such file or directory

How могу ли я запустить команду через скрипт bash? Что здесь происходит?

1
задан 10 August 2014 в 05:12

3 ответа

В первом файле вы можете перенаправить вывод только с помощью > /dev/null или &> /dev/null, которые будут перенаправлять stdout и stderr, поэтому нет необходимости в 2>&1.

Во втором файле , Я считаю, что правильным интерпретатором является #!/bin/bash.

0
ответ дан 24 May 2018 в 04:50
  • 1
    но это точно команда, выполняющая отлично, если запускается напрямую. Почему это? Также изменение shebang не имело никакого значения – aiao 9 August 2014 в 00:40
  • 2
    У меня плохая теория: когда команда запускается в файле, есть два stdouts (и stderrs): один из команды в скрипте и один из команды запускает скрипт. Поэтому перенаправление неоднозначно в отношении того, с каким этапом вы ссылаетесь. У меня нет информации, чтобы поддержать эту теорию. – dan08 9 August 2014 в 00:44

дескрипторы файлов 1 и 2 (stdout & amp; stderr) могут быть закрыты вином, потому что он не использует их и может даже высвободить 0 (stdin) после того, как он установил обработчик клавиатуры. Кроме того, это было бы более справедливо для окон, поскольку все дескрипторы файлов доступны, как ожидается, в новом экземпляре программы.

0
ответ дан 24 May 2018 в 04:50

Прежде всего: вы используете Wine, который в этом случае может потребовать воссоздать что-то, что имитирует среду выполнения командной оболочки Windows (cmd.exe).

Поскольку у вас нет сказал drive_c/Program\ Files\ \(x86\)/LINE/Line.exe, что нет возможности рассказать о своих требованиях.

Теперь : ambiguous redirect1: 1 выглядит как возможный вывод либо из Wine, либо из cmd.exe.

Может быть, вы необходимо убедиться, что ONLY WINE зависит от перенаправления стиля Linux. Возможно, вам придется посмотреть, что ожидает от Wine, и как защитить / отделить его параметры от тех, что были захвачены bash и vise versa.

Что нужно попробовать: поскольку это работает из командной строки bash, попробуйте source line2 для начала.

Если это работает, возможно, попробуйте вариант вроде этого - из сценария: bash <<EOF wine /home/aiao/.wine/drive_c/Program\ Files\ (x86)/LINE/Line.exe > /dev/null 2>&1 EOF

Еще один ... start - это инструмент командной строки Windows, который применяет те же задачи, что и двойной щелчок, например ссылку или файл, поэтому попробуйте:

wine start /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe

Примечание: БЕЗ перенаправления, если это работает, чтобы фактически запустить программу, тогда - если вам все еще нужно, вы можете попробовать добавить >/dev/null 2>&1 ( или что-то другое от других ответов) для Wine.

0
ответ дан 24 May 2018 в 04:50
  • 1
    Не работает. (исходная строка2), (исходная строка1), (./line), (. line). Line messenger (naver line) - это программа, очень похожая на skype.exe. Скажите, пожалуйста, что вам нужно знать и почему это важно. – aiao 9 August 2014 в 01:41
  • 2
    Ну, есть ли у вас машина для Windows, чтобы попробовать? Я не удивлюсь, если он там работает. Требуется ли Line.exe оборудование? ИСПОЛЬЗУЕТЕ ИСПОЛЬЗОВАНИЕ оборудования в вашей установке? Я добавлю еще одну вещь, чтобы попробовать выше ... – Hannu 9 August 2014 в 20:48
  • 3
    Если вы получаете сообщения об ошибках, как вы пытаетесь, добавьте их в свой вопрос выше (все это). Они могут помочь в дальнейшем. – Hannu 9 August 2014 в 20:57

Другие вопросы по тегам:

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