Противоположностью -z word
является -n word
, или просто word
без оператора:
foo=x
if [[ "$foo" ]] ; then
echo "foo is not empty"
fi
Обратите внимание, что вы не можете проверить между пустым значением и неустановленным значением таким образом. Вам понадобится ${foo+x}
, так как:[[ "${foo+x}" = x ]]
будет истинным для любого заданного значения, даже для пустой строки.
-z
,-n
также будет работать со стандартным тестом [.. ]
, для них вам не нужен [[.. ]]
. Разница здесь в том, что внутри [.. ]
переменные должны быть заключены в кавычки.
То, что у вас есть, работает в моей системе. Хотя немного более идиоматическая строка linux может быть:
zip -@ zipfile.zip < log.txt