Скрипт оболочки: как читать только часть текста из переменной - PullRequest
1 голос
/ 14 января 2012

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

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

VARIABLE = "number string status"

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

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

Как мне это получить?

Ответы [ 4 ]

4 голосов
/ 14 января 2012

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

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

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

a=`echo $var | cut -d' ' -f2`
echo $a
3 голосов
/ 14 января 2012

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

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

ОБНОВЛЕНИЕ

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

name=`echo "$variable" | cut -d " " -f 2`
1 голос
/ 13 декабря 2012
#!/bin/sh
myvar="word1 word2 word3 wordX"
set -- $myvar

echo ${15}    # outputs word 15
1 голос
/ 14 января 2012

Как насчет:

name=$(echo "$variable" | awk '{print $2}')
...