Считать значение из файла и поместить его в переменную - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь прочитать файл, содержащий одну строку

cpu=msm8998

Мне нужно получить значение после "=" и присвоить его переменной.Какой самый простой способ сделать это?без использования кошки, если это возможно

Ответы [ 5 ]

0 голосов
/ 18 декабря 2018

Если ваш входной файл - это всего лишь одна строка, то вы должны получить его:

$ cat input  

cpu=msm8998
$ echo $cpu 

$ . input
$ echo $cpu
msm8998
0 голосов
/ 18 декабря 2018

Если это действительно все, что находится в другом файле, я просто поставил бы его, пример, который вы привели, является допустимым назначением оболочки:

$ cat file
pu=msm8998
$ cat using_it
#!/bin/bash

. file
printf '%s\n' "$cpu"

$ ./using_it
msm8998
0 голосов
/ 18 декабря 2018

Это будет сделано:

my_var="$(cut -d= -f2 my_file.txt)"

Команда cut в основном говорит разделить каждую строку в my_file.txt на поля, разделенные знаками равенства, и вывести только второе поле.

Тестовая сессия:

$ echo cpu=msm8998 > my_file.txt
$ my_var="$(cut -d= -f2 my_file.txt)"
$ echo "$my_var"
msm8998
0 голосов
/ 18 декабря 2018

Использование встроенного read:

IFS== read name value < file
echo "${value}"

read разбивает входные данные на поля, ограниченные IFS внутренним разделителем полей оболочки .В вашем примере разделителем полей является =.

В качестве альтернативы просто источник файл:

source file
echo "${cpu}"
0 голосов
/ 18 декабря 2018

Предполагая, что этот текст находится в файле cpu.txt:

#! /usr/bin/env bash

CPU_FILE="cpu.txt"

CPU=`awk -F= '{ print $2 }' "$CPU_FILE"`
echo "\$CPU = $CPU"

Используя awk для разделения на = (это awk -F=), выведите 2-е поле ({ print $2 }), затем сохраните вывод всего этого в $CPU с обратным тиковым вложением (я не уверен в правильном названии этого, если оно есть).

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