Сначала вам нужно составить список каталогов, а затем удалить их,не мешая обычным файлам, ls -d */ только перечисляет подкаталоги -, а передача их с помощью rm удаляет каталоги и содержимое, сохраняя незакрепленные файлы.
Эта команда должна выполнить задание,
ls -d */ | xargs rm -rf
Во второй команде вы заканчиваете подстановку команд перед конвейером в jq
. Этот вызов jq
— это то, что анализирует нужное вам значение, поэтому он должен быть частью подстановки команды:
FWRID=$(
curl -X GET \
-H 'X-Auth-Email: REDACTED' \
-H 'X-Auth-Key: REDACTED' \
'https://api.cloudflare.com/client/v4/zones/aaxxx/filters' |
jq -r '.result[0].id'
)
В вашей исходной команде, где вы оставляете jq
вне подстановки команды, jq
будет считывать вывод присвоения переменной FWID
и получать из этого некоторый результат. Поскольку присваивание не производит никакого вывода, оно вообще не делает ничего интересного.
Кроме того, поскольку присваивание в исходной команде является частью конвейера, оно выполняется в подоболочке, поэтому значение $FWID
пусто (или, по крайней мере, не изменилось )при вызове echo
позже..