У меня есть эта переменная в сценарии удара Ubuntu, и я надеюсь извлекать его длину:
var_names='test1 tutorial2 test3w'
В списке Python я мог сделать len(var_names)
и результат был бы 3. Я должен сделать что-то подобное в сценарии удара - я должен найти способ определить длину строки и для ответа, чтобы быть 3.
Моя попытка:
Я пытался преобразовать это в массив затем тест его длина:
arr=($var_names)
echo ${#arr[@]}
однако:
echo $arr
только дает
test1
Вопрос:
Howe я получаю длину этой переменной в ударе, таком, что возвращенная длина равняется 3?
Ваш подход корректен,${#arr[@]}
даст Вам число элементов в массиве (в этом случае, 3):
$ var_names='test1 tutorial2 test3w'
$ arr=($var_names)
$ echo ${#arr[@]}
3
Можно также возвратить длины строки использования отдельных элементов массива ${#arr[0]}
, ${#arr[1]}
и так далее:
$ echo "${#arr[0]}"
5
$ echo "${#arr[1]}"
9
$ echo "${#arr[2]}"
6
Причина это $arr
возвраты только первый элемент test1
это, это эквивалентно ${arr[0]}
; если Вы хотите возвратить целый массив, можно использовать также ${arr[@]}
или ${arr[*]}
:
echo "${arr[@]}"
test1 tutorial2 test3w
Посмотрите Arrays
раздел man bash
Так как Вы эффективно пытаетесь найти количество слов в переменной, можно использовать wc -w
команда для этого:
$ var_names='test1 tutorial2 test3w'
$ wc -w <<< "$var_names"
3