Я бы сделал что-то вроде:
ls -1 | grep "\.png$" | xargs -L 50 rm -f
Это сопоставит (и удалит) только файлы, заканчивающиеся на .png
.
Если вы хотите действовать, только если строка не -пуста, используйте параметр по умолчанию при ссылке на переменную:
master="$(read_json -f.vcs.json -k git.master)"
Если команды подоболочки не возвращают вывод, переменные будут нулевыми. Затем вы можете использовать это с заменой по умолчанию:
do-a-thing "${master-master}" # if 'master' is null, use the default value 'master'
# otherwise, use the contents of the variable
Я бы перевернул логику:
# Note that the variables 'master' and 'integration' are NOT defined yet
if [ -f '.vcs.json' ]; then
master="${`read_json -f.vcs.json -k git.master`:-master}"
integration="${`read_json -f.vcs.json -k git.integration`:-integration}"
fi
# Set default values if empty or missing
: ${master:=master} ${integration:=integration}
# They are now guaranteed to be non-empty
echo $master $integration