Ошибка в простом сценарии оболочки (т. Е. +: Неожиданный «конец выражения»)?

Это не идеальное решение для вашей проблемы, но это может вам помочь.

youtube-dl

Существует инструмент командной строки под названием youtube-dl, который предлагает много вариантов. Я думаю, что он сначала загрузит полное видео, а затем преобразуется в аудио. Я не уверен, есть ли возможность загружать аудиопоток, но я думаю, что нет. Кроме того, youtube-dl написан на python, но это не только простой скрипт.

Если вы посмотрите на man-страницу, найдите варианты последующей обработки. --extract-audio, например, преобразует видеофайл в аудиофайл. Вы также можете установить --audio-format и --audio-quality. Вы также можете запустить любую пользовательскую команду после загрузки с помощью --exec CMD.

Получить ее из Ubuntu Software Center: https://apps.ubuntu.com/cat/applications/youtube-dl/ Получить ее из Github: https://rg3.github.io/youtube-dl/

VLC steamaming

В качестве альтернативы вы можете использовать VLC для потоковой передачи видео и просто игнорировать или отключать видео функция.

Он должен работать, чтобы скопировать URL-адрес, открыть vlc и нажать CTRL + V или открыть сетевой пар (CTRL + N) и вставить URL-адрес. Затем нажмите на Video-> Videotrack-> deactivate.

Обратите внимание, что это все равно будет транслировать все видео, но оно не отобразится.

0
задан 19 January 2018 в 22:09

6 ответов

Я думаю, что наиболее вероятным объяснением является то, что ваша переменная dirsize пуста.

Например, в bash

$ foo=3; bar= ; echo $(( $foo + $bar ))
bash: 3 +  : syntax error: operand expected (error token is "+  ")

, в то время как в AT & amp; T ksh

$ foo=3; bar= ; echo $(( $foo + $bar ))
ksh:  3 +  : more tokens expected

и в BSD mksh

$ foo=3; bar= ; echo $(( $foo + $bar ))
mksh:  3 +  : unexpected 'end of expression'

Обратите внимание, что все эти оболочки допускают «голые» имена переменных, такие как (( foo + bar )) в выражениях, и эта форма может быть предпочтительной, поскольку она обрабатывает пустые переменные как нулевые значения. Из man bash:

   Shell variables are allowed as operands; parameter  expansion  is  per‐
   formed before the expression is evaluated.  Within an expression, shell
   variables may also be referenced by name without  using  the  parameter
   expansion  syntax.  A shell variable that is null or unset evaluates to
   0 when referenced by name without using the parameter expansion syntax.

Так, например,

$ foo=3; bar=7 ; echo $(( foo + bar ))                                         
10

$ foo=3; bar= ; echo $(( foo + bar ))                                          
3
1
ответ дан 22 May 2018 в 15:26
  • 1
    Да, вы правы. Большое спасибо за вашу помощь ... – Kumarasamy Palanisamy 24 January 2018 в 13:19

Я думаю, что наиболее вероятным объяснением является то, что ваша переменная dirsize пуста.

Например, в bash

$ foo=3; bar= ; echo $(( $foo + $bar )) bash: 3 + : syntax error: operand expected (error token is "+ ")

, в то время как в AT & amp; T ksh

$ foo=3; bar= ; echo $(( $foo + $bar )) ksh: 3 + : more tokens expected

и в BSD mksh

$ foo=3; bar= ; echo $(( $foo + $bar )) mksh: 3 + : unexpected 'end of expression'

Обратите внимание, что все эти оболочки допускают «голые» имена переменных, такие как (( foo + bar )) в выражениях, и эта форма может быть предпочтительной, поскольку она обрабатывает пустые переменные как нулевые значения. Из man bash:

Shell variables are allowed as operands; parameter expansion is per‐ formed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax.

Так, например,

$ foo=3; bar=7 ; echo $(( foo + bar )) 10 $ foo=3; bar= ; echo $(( foo + bar )) 3
1
ответ дан 17 July 2018 в 22:38

Я думаю, что наиболее вероятным объяснением является то, что ваша переменная dirsize пуста.

Например, в bash

$ foo=3; bar= ; echo $(( $foo + $bar )) bash: 3 + : syntax error: operand expected (error token is "+ ")

, в то время как в AT & amp; T ksh

$ foo=3; bar= ; echo $(( $foo + $bar )) ksh: 3 + : more tokens expected

и в BSD mksh

$ foo=3; bar= ; echo $(( $foo + $bar )) mksh: 3 + : unexpected 'end of expression'

Обратите внимание, что все эти оболочки допускают «голые» имена переменных, такие как (( foo + bar )) в выражениях, и эта форма может быть предпочтительной, поскольку она обрабатывает пустые переменные как нулевые значения. Из man bash:

Shell variables are allowed as operands; parameter expansion is per‐ formed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax.

Так, например,

$ foo=3; bar=7 ; echo $(( foo + bar )) 10 $ foo=3; bar= ; echo $(( foo + bar )) 3
1
ответ дан 24 July 2018 в 13:15

man bash документирует команду for как:

for name [ [ in [ word ... ] ] ; ] do list ; done

man ksh говорит:

for name [in word ...]; do list; done

В обоих случаях вам нужна точка с запятой (; ]), чтобы отметить конец выражения, содержащего слова в $dirlist.

-1
ответ дан 22 May 2018 в 15:26

man bash документирует команду for как:

for name [ [ in [ word ... ] ] ; ] do list ; done

man ksh говорит:

for name [in word ...]; do list; done

В обоих случаях вам нужна точка с запятой (; ]), чтобы отметить конец выражения, содержащего слова в $dirlist.

-1
ответ дан 17 July 2018 в 22:38

man bash документирует команду for как:

for name [ [ in [ word ... ] ] ; ] do list ; done

man ksh говорит:

for name [in word ...]; do list; done

В обоих случаях вам нужна точка с запятой (; ]), чтобы отметить конец выражения, содержащего слова в $dirlist.

-1
ответ дан 24 July 2018 в 13:15

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

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