![如何在 shell 中换行并将特定字符串分配给变量](https://linux22.com/image/160260/%E5%A6%82%E4%BD%95%E5%9C%A8%20shell%20%E4%B8%AD%E6%8D%A2%E8%A1%8C%E5%B9%B6%E5%B0%86%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E9%85%8D%E7%BB%99%E5%8F%98%E9%87%8F.png)
我想 cat 一个文件并将特定行作为输出:
名称=“XXX”
如何仅将 XXX 分配给变量 $name
答案1
如果文件是 shell 或 bash 代码,最好的选择将是到source
文件来获取所有变量:
. ./file
或者,如果不是所有内容都是 shell 代码,或者您不想执行其中的所有内容,则source
如果您之前过滤文件,仍然可以执行:
. <(grep '^NAME=' file)
然后就可以使用变量了$NAME
。
备择方案:
如果可用的话使用grep -P
:
name=$(grep -Po '^NAME="\K[^"]*' file)
使用grep
不带-P
:
name=$(grep -o '^NAME="[^"]*' file | sed 's/NAME="//')
使用awk
:
name=$(awk -F\= '$0~/^NAME/{gsub(/"/,"",$2);print $2}' file)