Используя nokogiri, можно использовать простой запрос на основе CSS для извлечения внутреннего текста тега:
$ nokogiri -e 'puts $_.at_css("title").content'
Why Are Bad Words Bad? - YouTube
Аналогично, чтобы извлечь значение атрибута "content" тега:
$ nokogiri -e 'puts $_.at_css("meta[name=title]").attr("content")'
Why Are Bad Words Bad?
Суть проблемы в том, что вы получаете (.
) сценарий, а не просто выполняете их ( ./ script2.sh
или / bin / bash script2 .sh
).
Если вам действительно нужен исходный код
, они сделают это в подоболочке (. ./Myscript2.sh args)
Если вы можете нормально выполнить скрипты, которые вы может хранить в переменной код выхода, который автоматически обновляется после каждого выполнения в $?
.
./myscript2.sh arg1
FirstExitCode=$?
./myscript2.sh arg2
SecondExitCode=$?
...
Подробнее об источнике при помощи .
Основываясь на ответе Хастура о сорсинге, кажется, это то, что мне нужно в second.sh
, чтобы вернуть статус, не убивая терминал:
#!/usr/bin/env bash
...
# if success, return 0
[ "$0" = "$BASH_SOURCE" ] && exit 0 || return 0
# else for failure, return non-0
[ "$0" = "$BASH_SOURCE" ] && exit 1 || return 1
Один, возможно, не идеальный способ - сделать alias exit=return
, который затем заставляет second.sh
выходить из сценария и возвращаться вместо этого, с указанным кодом. Это, конечно, не разрезает вложенность функций, как это делает exit
, но должно хорошо работать для вызовов верхнего уровня exit
.
Возможно, со временем вам понадобится unalias exit
.