Как я понял
= ожидает строки
-eq ожидает целых чисел
«$ bar» - для буквальных совпадений, т. Е. Z * может расширяться, но «z *» будет буквально соответствовать символу подстановки.
Разница между [] и [[]] состоит в том, что в последнем слове разделение и расширение имени пути не выполняются, а в первом.
Plus [[]] позволяет использовать дополнительные операторы:
&& (AND),
|| (ИЛИ ЖЕ),
> (String1 лексически больше, чем String2),
<(String1 лексически меньше, чем String2) </p>
Оператор сравнения == ведет себя иначе в тесте с двойными скобками, чем в одиночных скобках.
[[$ a == z *]] # Истина, если $ a начинается с "z" (сопоставление с образцом).
[[$ a == "z *"]] # Истина, если $ a равно z * (буквальное соответствие).
[$ a == z *] # Происходит глобализация файла и разбиение по словам.
["$ a" == "z *"] # Истинно, если $ a равно z * (буквальное соответствие).
Проверьте http://tldp.org/LDP/abs/html/comparison-ops.html для получения дополнительной информации