将变量内容列入单独的文件(unix)

时间:2016-07-01 07:57:53

标签: variables unix

我想将文件中的几个变量的内容作为一列。例如,如果我设置我的变量:

FILE1=1.txt
FILE2=2.txt
FILE3=3.txt

要grep所有以FILE开头并后跟一个数字的变量:

set | grep FILE[0-9] > LIST

然而,内容只是变量名而不是内容,即:

head LIST

FILE1
FILE2
FILE3

我想:

1.txt
2.txt
3.txt

在相关问题上:我使用set来打印变量。是否有一个命令只打印当前会话中设置的变量?

2 个答案:

答案 0 :(得分:1)

您可以使用cut

grep "FILE*" file | cut -d"=" -f2
1.txt
2.txt
3.txt

使用的选项是

-d, --delimiter=DELIM
       use DELIM instead of TAB for field delimiter
-f, --fields=LIST
       select only these fields;  also print any line that contains no delimiter character, unless the -s option is specified

使用awk,将IFS设置为"="并从匹配的文件中打印第二列。

awk -F"=" '/FILE*/{print $2}' file
1.txt
2.txt
3.txt

要在文件中打印所有name=value对,请使用以下脚本。假设您的文件只有这些名称 - 值对

#!/bin/bash

setVariables=()
while IFS="=" read -r varName varValue;
do
setVariables+=("$varValue")
done <file

并将setVariables中设置的值打印为

for value in "${setVariables[@]}"
do
    echo "$value"
done

答案 1 :(得分:0)

要获取变量FILE1的内容,您只需评估字符串“$ FILE1”。

list=$(compgen -A variable | grep '^FILE[0-9]$')
for line in $list
do
    eval echo '$'$line >> LIST
done

不要忘记正则表达式周围的'^ $'。否则即使是“HISTFILE1”也会匹配。