0

尝试从外部文件获取变量值时遇到问题。我的问题是:是否可以从 for 中的文件中读取值,然后使用 cut 命令我可以获得 = 之前的信息,这将是变量,在 = 之后是值。这是我在下面尝试的,但这是不允许的:

for i in `cat $1`
do
    `echo $i | cut -d= -f1`=`echo $i | cut -d= -f2`
done

$1 是作为参数传递的文件,它有 3 行,其中行有一个变量和格式为variable=value的值。有没有办法我可以做到这一点,而不是需要获取变量名,然后再获取这些变量值的另一个条件?或者即使我的代码是正确的,但只需要改变一些东西。

4

2 回答 2

5

尝试:

source $1

例子:

$ cat file.txt 
var1=123
var2=234

$ cat my.sh 
#!/bin/bash
source $1
echo $var1

$ ./my.sh file.txt 
123

或者如果“for”循环对你很重要,就使用“let”。

for i in `cat $1`
do
    let `echo $i | cut -d= -f1`=`echo $i | cut -d= -f2`
done
于 2013-09-11T18:21:18.207 回答
0

您可以通过以下方式简单地做到这一点:

while read -r LINE; do
    echo "${LINE#*=}"  ## Delete all values before and including = then, echo it.
done < "$1"
于 2013-09-11T18:31:12.450 回答