Вы можете использоватьset -e
:
(set -e;
for what in \
cache \
thumbs;
do my template $what:clear; done)
set -e
вызывает выход из оболочки, когда команда завершается с кодом выхода, отличным от -нулевым, и сбой не обрабатывается каким-либо другим образом. В приведенном выше примере вся подоболочка завершает работу в случае сбоя my...
, а код выхода подоболочки — это код выхода неудачной команды. Это работает в сценариях оболочки и в командной строке.
Другой подход заключается в использовании дизъюнкции:
for what in \
cache \
thumbs; do
my template $what:clear || break
done
Недостатком этого является требование || break
после каждой команды и проглатывание кода выхода, указывающего на сбой; цикл for
каждый раз будет выходить с нулевым кодом выхода. Этого можно избежать, сделав break
неудачным, что приведет к завершению цикла for
с кодом выхода 1 (, что все же не так хорошо, как описанный выше подход подоболочки ):
for what in \
cache \
thumbs; do
my template $what:clear || break -1 2>/dev/null
done
(break -1
вызывает break
выход с ненулевым -кодом выхода, а 2>/dev/null
отбрасывает свое сообщение об ошибке ).
Насколько я знаю, вы не можете использовать &&
для выхода из цикла, как в && done
или что-то подобное.
Схема data:
является локальной в контексте веб-страницы, тогда как и wget
, и curl
работают с удаленными данными. Возможно, вы действительно ищете base64 -d
, который позволяет декодировать такие данные.
Наконец, схема data URI может быть намного длиннее/больше, чем позволяет ваша оболочка, см. :https://stackoverflow.com/a/41755526, и я сомневаюсь, что вы хотите хранить так много случайных данных в истории оболочки.
Дополнение к ответу Артема.
Вы можете загрузить xclip через менеджер пакетов и использовать сценарий оболочки. (Вам следует скопировать URL-адрес данных):
#! /usr/bin/bash
data=$(xclip -out -selection clipboard)
ext=${data#*/}
ext=${ext%%;*}
ext=${ext/jpeg/jpg}
if [ $1 ]; then
filename=$1
else
filename=file
fi
echo "${data#*,}" | base64 -d > $filename.$ext
Без аргументов имя файла сохраняется как файл, в противном случае это ваш первый аргумент.
Редактировать :Улучшен скрипт --благодаря отличному комментарию Фредди.