Почему я не могу получить значения выхода команды в этом сценарии удара?

Можно хотеть попробовать:

eval rm foo.{$ext0..$extN}

Не уверенный, является ли это лучшим ответом, но это, конечно - то.

9
22.06.2011, 01:20
4 ответа

Единственный способ, которым может быть достигнут оператор, состоит в том если exec самостоятельно сбои; если это успешно выполняется, ffmpeg управляйте заменяет оболочку полностью. (Педантично, && перестанет работать в этом случае также, таким образом, это не может быть достигнуто вообще.) Вы не хотите exec это, просто выполняет его.

13
27.01.2020, 20:05
  • 1
    я вижу, и без && после того, как ffmpeg управляют, чтобы это на самом деле работало. У меня все еще есть еще один вопрос, если это хорошо в этом месте - там способ отобразить stdout и stderr ffmpeg где-нибудь, не используя окно терминала? Как в zenity f.e. –  tesseract 21.06.2011, 23:41
  • 2
    Вы хотели бы получить его с $() создайте в переменную, затем передайте ту переменную zenity. Не упустите заключение в кавычки, и zenity по моему опыту, PanGo использования, таким образом, необходимо заменить <, &, > с &lt;, &amp;, &gt; соответственно. –  geekosaur 21.06.2011, 23:45

exec command оператор заменяет текущую оболочку command. Таким образом, Ваш сценарий на самом деле завершается в строке exec ffmpeg ...; остающиеся строки были бы выполнены если и только если ffmpeg команда не найдена на Вашем ПУТИ (или это не может быть запущено по другим причинам).

Можно надеть больше деталей exec удар, встроенный путем ввода help exec в командной строке удара:

$ help exec
exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
    Replace the shell with the given command.

    Execute COMMAND, replacing this shell with the specified program.
    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
    any redirections take effect in the current shell.
    [...]
5
27.01.2020, 20:05

Согласно этому exec заменяет оболочку командой, которую Вы указываете. Таким образом, Ваш сценарий никогда не добирается до команд мимо exec.

Вам не нужно exec. Просто укажите команду.

1
27.01.2020, 20:05

Можно сохранить exec управляйте, помещаете ли Вы его в подоболочку:

- exec ffmpeg -i "$1" -ab 256k "$BASEFILENAME.mp3" &&
+ (exec ffmpeg -i "$1" -ab 256k "$BASEFILENAME.mp3") &&
0
27.01.2020, 20:05
  • 1
    я вижу, но не && все еще неправильно там? –  tesseract 22.06.2011, 11:26
  • 2
    Да. И какой смысл того, чтобы сохранить exec? –  jmtd 22.06.2011, 11:34

Теги

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