Пока я опаздываю на вечеринку, нужно сказать одно.
Первый параметр устанавливает array1_OfStrings
в массив строк
Другой параметр указывает, что array1_OfStrings
является массивом строк и затем устанавливает его пустым.
Пока это может быть очень небольшая разница, вы заметите это при компиляции. Для первого варианта компилятор автоматически попытается выяснить, что является типом array1_OfStrings
. Второй вариант этого не сделает, вы дадите компилятору понять, что на самом деле это массив строк и сделано.
Почему это важно? Взгляните на следующую ссылку: https://thatthinginswift.com/debug-long-compile-times-swift/
Как вы можете видеть, если вы этого не сделаете объявить тип переменной, которая может повлиять на производительность сборки. LOT.
"$@"
От http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters :
Расширяется до позиционных параметров, запускающихся от одного. Когда расширение происходит в двойных кавычках, каждый параметр расширяется до отдельного слова. Таким образом, "$" эквивалентен "1$"2$"".... Если дважды заключенное в кавычки расширение происходит в слове, к расширению первого параметра присоединяются с начинающейся частью оригинального слова, и к расширению последнего параметра присоединяются с последней частью оригинального слова. Когда нет никаких позиционных параметров, "$" и $ ни до чего не расширяются (т.е. они удалены).
Это означает, что пробелы в аргументах повторно заключаются в кавычки правильно.
do_cmd()
{
"$@"
ret=$?
if [[ $ret -eq 0 ]]
then
echo "Successfully ran [ $@ ]"
else
echo "Error: Command [ $@ ] returned $ret"
exit $ret
fi
}
Дополнительный к "$@"
, что говорит Douglas, я использовал бы
return $?
А не exit
. Это вышло бы из Вашей оболочки вместо того, чтобы возвратиться из функции. Если в случаях Вы хотите выйти из своей оболочки, если что-то пошло не так, как надо, можно сделать это в вызывающей стороне:
do_cmd false i will fail executing || exit
# commands in a row. exit as soon as the first fails
do_cmd one && do_cmd && two && do_cmd three || exit
(Тот путь, можно обработать отказы и затем выйти корректно).