Сначала установите пакет rjson
:
install.packages("rjson")
Затем:
library("rjson")
json_file <- "http://api.worldbank.org/country?per_page=10®ion=OED&lendingtype=LNX&format=json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))
Обновление: начиная с версии 0.2.1
json_data <- fromJSON(file=json_file)
Используйте встроенную команду set -e
:
#!/bin/bash
set -e
# Any subsequent(*) commands which fail will cause the shell script to exit immediately
В качестве альтернативы вы можете передать -e
в командной строке:
bash -e my_script.sh
Вы также можете отключить это поведение с set + e
.
Вы также можете использовать все или некоторые из параметров -e
-u
-x
и -o pipefail
следующим образом:
set -euxo pipefail
-e
завершает работу при ошибке, -u
ошибки для неопределенных переменных и -o (для параметра) pipefail
завершает работу при сбоях командной строки. Некоторые ошибки и обходные пути хорошо документированы здесь .
(*) Примечание:
Оболочка , но не завершает работу, если команда, которая завершилась ошибкой, является частью список команд, следующий сразу после ключевого слова , а или до ключевого слова , часть теста после if или elif зарезервированных слов, часть любой команды, выполняемой в списке && или || , кроме команды после последнего && или || , любая команда в конвейере, но последний, или если возвращаемое значение команды инвертируется с !
(из man bash
)
Чтобы выйти из сценария, как только одна из команд завершилась неудачно, добавьте в начало следующее:
set -e
Это заставит сценарий немедленно выйти, когда какая-либо команда, не являющаяся частью теста (например, в условии if [ ... ]
или конструкции &&
), завершится с ненулевым кодом выхода.
Я думаю, что вы ищете команду trap
:
trap command signal [signal ...]
Для получения дополнительной информации см. на этой странице .
Другой вариант - использовать команду set -e
в верхней части сценария - она завершит работу сценария, если какая-либо программа / команда вернет неверное значение.
Одна из идиом такова:
cd some_dir && ./configure --some-flags && make && make install
Я понимаю, что она может получиться длинной, но для больших скриптов вы можете разбить ее на логические функции.