Как определить длину строки с помощью команды echo и wc

Попробуйте что-нибудь подобное, хотя я не совсем уверен, что делает ваш скрипт.

if  [ -n "$1" -a -n "$2" -a -f "$1" ]; then
    dts=($(cat $1 | cut -d: -f$2))
        for i in ${!dts[@]}; do
            echo "$i) ${dts[$i]} "
        done
        read -p "Select a user to delete: " OKSELUSRGRP
        p=$(echo $OKSELUSRGRP | grep -E ^[0-${#dts[@]}]$)
        while [ -z "$p" ]; do
            echo "Error, select a correct option"
            sleep 1
            read -p "Select a user to delete: " OKSELUSRGRP
            p=$(echo $OKSELUSRGRP | grep -E ^[0-${#dts[@]}]$)
        done
    OKSELUSRGRP=${dts[$p]}
else
        echo "
Usage: $0 [file] [something else]   

$0 can be used to select users or something.
"
fi
0
31.01.2017, 11:47
3 ответа
Len='echo $str | wc -c'

Это установит переменную Len в строку echo $ str | wc -c (ничего не выводит).

Оболочка не будет выполнять ни одну из команд в строке, поскольку это не подстановка команд.

Чтобы получить вывод команды, используйте подстановку команды, $ (...) :

Len=$( echo "$str" | wc -c )

В этом случае также можно использовать

Len="${#str}"

, что намного быстрее.

Расширение параметра $ {# parameter} будет расширено до длины значения параметра .

1
28.01.2020, 02:26

Вам необходимо назначить переменной Len вывод вашей команды:

Len=$(echo "$str" | wc -c)
0
28.01.2020, 02:26

Если вы предпочитаете использовать кавычки для подстановки команд, тогда вы должны использовать обратные кавычки: `, а не одинарную кавычку: ', например. :

Len=`echo $str | wc -c`

Как уже упоминалось, вы также можете использовать синтаксис len = $ (...) .

2
28.01.2020, 02:26

Теги

Похожие вопросы