Скрипт оболочки: как читать только часть текста из переменной

Я разрабатываю небольшой скрипт, используя оболочку Ash (не Bash).

Теперь у меня есть переменная со следующим составом:

VARIABLE = "number string status"

где число может быть любым числом (на самом деле от 1 до 18, но в будущем это число может быть больше). Строка - это имя, а статус - или включен, или выключен. Имя обычно состоит только из строчных букв.

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

Как я могу получить это?

4 ответа

Решение

Два пути; один должен использовать $IFS и используйте цикл while - это будет хорошо работать для одной строки - как:

echo "Part1 Part2 Part3" | while read a b c
do
    echo $a
done

в качестве альтернативы, используйте cut следующее:

a=`echo $var | cut -d' ' -f2`
echo $a

Как насчет использования cut?

name=$(echo "$variable" | cut -d " " -f 2)

ОБНОВИТЬ

Видимо, Эш не понимает $(...), Надеюсь, вы можете сделать это вместо этого:

name=`echo "$variable" | cut -d " " -f 2`

Как насчет:

name=$(echo "$variable" | awk '{print $2}')
#!/bin/sh
myvar="word1 word2 word3 wordX"
set -- $myvar

echo ${15}    # outputs word 15
Другие вопросы по тегам