Сохранение вывода команды в переменную

Мне кажется, что рассматриваемая таблица создана с помощью javascript, а нужная вам информация не отображается в HTML. Это исключает простые решения на основе wget -или curl -. Вы можете попробовать использовать что-то вроде PhantomJS, чтобы получить содержимое в безголовом режиме, но вам, вероятно, лучше попытаться использовать упомянутую библиотеку @datUser.

1
12.04.2020, 00:37
2 ответа

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

.
cmd | next command... etc
var=$(cmd)

Процесс выбора строки и дальнейшего выбора того, что находится после знака =, называется «обработкой текста», и оболочка не совсем подходит для этого.

Обычный способ сделать это может быть sed:

 $ mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p'
 Singer

И записать результат в переменную:

$ t=$(mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p')
$ echo "$t"
Singer

Внутри простой оболочки нет простого эквивалента. В более высоких оболочках (ksh,bash,zsh )можно использовать регулярное выражение. Какую оболочку вы используете?

3
28.04.2021, 23:18

Учитывая, что ваша оболочка обеспечивает «подстановку процессов», вы можете попробовать «использовать» результат:

. <(mid3v2 -l someFile.mp3 | grep -o "[^ ]*=[^ ]*")
t=$TPE1
0
28.04.2021, 23:18

Теги

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