Потихоньку сталкиваюсь с разными тонкостями BASH и зашёл в тупик. Никак не могу понять простую вещь - какой тип данных у $@ и ${somearray[@]}? Точнее даже не так, первый вопрос такой: правда ли что $@ по поведению и возможностям использования полностью аналогично ${somearray[@]}? (где somearray - какой-нибудь массив).
А второй вопрос, собственно - какой тип данных у $@ и, самое главное, где-бы почитать исчерпывающую информацию на тему того, как с этим типом данных работать и к чему приводит его использование в различных ситуациях?
Поясню: есть такие хитрости по типу ${@: -1}. Если бы $@ был бы строкой, то такая конструкция возвращала бы последний символ. А она возвращает последний элемент массива, в случае с $@ - последний элемент вообще говоря несуществующего массива всех входных аргументов.
Проясните, пожалуйста, что это вообще за зверь такой, как с ним работать и самое главное - какие у него есть возможности?
Как я понимаю, $@ - это некоторый промежуточный псевдотип, нечто между массивом и строкой, который получить внешними средствами невозможно. $@ практически всегда прикидывается строкой разделённых пробелами компонент, и единственное его уникальное свойство, которое я нашёл - то самое ${@: N} - отрезание первых или последних N компонент. Более ничего вразумительного накопать/надумать не удалось. Очень рассчитываю на помощь, хотелось бы разобраться.
Вообще это скорее нетипизированный массив, тип значения любого члена которого зависит от интерпретации. В общем, все массивы в bash можно считать нетипизированными.