我正在尝试读取包含一行的文件
cpu=msm8998
我需要获取“ =”之后的值并将其分配给变量。最简单的方法是什么?尽可能不使用猫
答案 0 :(得分:5)
使用内置的read
:
sudo kill -kill $(sudo lsof -t -i :5432)
IFS== read name value < file
echo "${value}"
将输入分为由read
外壳的内部字段分隔符分隔的字段。在您的示例中,字段分隔符为IFS
。
或者,仅source个文件:
=
答案 1 :(得分:3)
如果您的输入文件仅是那一行,那么您应该获取它:
$ cat input
cpu=msm8998
$ echo $cpu
$ . input
$ echo $cpu
msm8998
答案 2 :(得分:1)
假定此文本在文件cpu.txt
中:
#! /usr/bin/env bash
CPU_FILE="cpu.txt"
CPU=`awk -F= '{ print $2 }' "$CPU_FILE"`
echo "\$CPU = $CPU"
使用awk
在=
上拆分(即awk -F=
),输出第二个字段({ print $2 }
),然后将所有结果存储到{{ 1}},并带有反勾号(如果有的话,我不确定其正确名称)。
答案 3 :(得分:1)
这可以做到:
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
答案 4 :(得分:0)
如果这实际上是另一个文件中的全部内容,那么我只是将其作为源,您给出的示例是有效的shell分配:
$ cat file
pu=msm8998
$ cat using_it
#!/bin/bash
. file
printf '%s\n' "$cpu"
$ ./using_it
msm8998