LINUX.ORG.RU

[bash] $1 не хочет быть массивом

 


0

1

Как известно, любая строка — это массив символов. Пишу скрипт

#! /bin/bash
a=${1[@]//.*/}
echo $a

. myscript.sh shalala.tralala
Получаю:
-bash: ${1[@]//.*/}: bad substitution

Пишу

#! /bin/bash
a=$1
a=${a[@]//.*/}
echo $a

. myscript.sh shalala.tralala

Получаю:
shalala

Deleted

Ответ на: комментарий от sdio

О, надо же. Просто я считал что оно только с массивами работает. А почему всё-таки $1 нельзя интерпретировать как массив?

Deleted
()

Кто сказал, что в bash строка — это массив символов? Насколько я знаю, это не так.

anonymous
()
Ответ на: комментарий от anonymous

Отдебажь bash @ Докажи обратное.

Deleted
()

В языке bash строка не является массивом. Массив объявляется вполне определённым образом.

gotf ~ % TEST='1 2 3'
gotf ~ % echo ${TEST[2]}

gotf ~ % TEST=( 1 2 3 )
gotf ~ % echo ${TEST[2]}
3
GotF ★★★★★
()

Нерегулярный синтаксис (и башизмы не всегда полезны):

a=abc; ${a:1:2} - выводит `bc'

n01r ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.