Скрипт оболочки: как читать только часть текста из переменной
Я разрабатываю небольшой скрипт, используя оболочку 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`
#!/bin/sh
myvar="word1 word2 word3 wordX"
set -- $myvar
echo ${15} # outputs word 15