Насколько я знаю, для этого нет синтаксиса;вам нужно что-то вроде
set datafile "$_Z_DATA"
test -z "$datafile"; and set datafile "$HOME/.z"
или
if set -q _Z_DATA; and test -n _Z_DATA
set datafile "$_Z_DATA"
else
set datafile "$HOME/.z"
fi
В отличие от bash
, переменные, определенные внутри функции, автоматически являются локальными для этой функции, поэтому эквивалент local
не требуется.(Предыдущая версия этого ответа использовала опцию -l
для локализации переменной, но это делает ее локальной для любого, в котором block set
встречается.)