Shell Script - сохранить подстроку в переменную - PullRequest
3 голосов
/ 04 марта 2010

Очень простой вопрос сценария оболочки. У меня есть файл с чем-то вроде этого:

var "aaaaa"
var "bbbbb"
...

Теперь, как я могу присвоить строку в кавычках переменной? Это то, что у меня есть сейчас (но мне не хватает заданной части ...):

while read line
do
  echo $line | cut -d" " -f3
done

который печатает то, что я хочу ... как мне сохранить его в переменной?

Спасибо

Ответы [ 3 ]

7 голосов
/ 04 марта 2010
my_var=$(echo $line | cut -d" " -f3)

Вам необходимо выполнить команду. Для этого и используется $ ().

1 голос
/ 05 марта 2010

вам не нужно использовать внешнюю команду обрезки, чтобы «обрезать» ваши строки.Вы можете использовать оболочку, она более эффективна.

while read -r a b
do
  echo "Now variable b is your quoted string and has value: $b"
done <"file"

Или

while read -r line
do
  set -- $line
  echo $2
done <"file"
0 голосов
/ 04 марта 2010

Зависит от оболочки.

Борн и дериваты

my_var_name=expression

C оболочкой и производными, вы делаете

setenv my_var_name expression

Если вы хотите сохранить выходные данные команды (например, «cut xyz»), вы используете оператор обратных галочек в качестве выражения:

my_var_name=`echo $line | cut -d" " -f3`

Я думаю, что bash также поддерживает $ (), но не уверен в отличии от обратных символов - см. Раздел 3.4.5 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...