Поэтому Ваша оболочка запускает другую оболочку для запущения скрипта. Вторая оболочка изменяет свой рабочий каталог и затем выходит к первой оболочке, которая никогда не изменяла ее каталог.
Чтобы заставить Вашу текущую оболочку запустить скрипт, назовите это этим путем:
. scriptname
(заметьте точку). Конечно, необходимо будет вынуть это exit 0
.
Можно также записать функцию оболочки. Посмотрите ksh(1)
.
Я понятия не имею, что Wget
Вы говорите, но я думаю, что вы хотите скачать файл. Если так, да, вы можете скачать его и разбирать его без промежуточного файла Temp:
$ value=$(wget -O - http://example.com/file.html | grep -oP 'strValue="\K[^"]+')
$ echo $value
57
Вы можете извлечь значение в своем примере с помощью grep
и присвоить его переменной следующим образом
$ x=$(wget -0 - 'http://foo/bar.html' | grep -Po '<value.*strValue="\K[[:digit:]]*')
$ echo $x
57
Объяснение:
$()
: команда substitutiongrep -P
: grep с разрешением Perl regexpgrep -o
: grep показывает только совпадающую часть строки\K
: не показывайте в выводе ничего, что совпадало до этого моментаwget -O -
: печатает загруженный документ на стандартный вывод (не в файл)Однако, для общего подхода лучше использовать специальный парсер для html-кода.
Помимо метода wget -O -...
, вы также можете использовать curl -Ss...
, чтобы избежать проблем с временным файлом.
Нижеследующее иллюстрирует использование pup
(https://github.com/ericchiang/pup), который поддерживает язык запросов на основе CSS -.
a )Чтобы извлечь «текстовое» значение тега <value>
:
pup 'value text{}' # yields 572
b )Чтобы извлечь значение атрибута strValue тега <value>
:
pup 'value attr{strvalue}' # yields 57