命令返回变量

时间:2013-09-11 18:09:03

标签: file shell unix for-loop variable-assignment

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你可以通过以下方式完成:

while read -r LINE; do
    echo "${LINE#*=}"  ## Delete all values before and including = then, echo it.
done < "$1"