我在尝试从外部文件中获取变量值时遇到问题。 我的问题是:是否有可能从for中读取文件中的值然后使用cut命令我可以在=之前得到信息,这将是变量之后的=将是值。这是我在下面尝试但不允许的:
for i in `cat $1`
do
`echo $i | cut -d= -f1`=`echo $i | cut -d= -f2`
done
$ 1是作为参数传递的文件,它有3行,其中行有一个变量,格式为 variable = value 。 有没有办法我可以这样做,而不是需要获取变量名称,然后另一个条件为这些变量的值?或者即使我的代码是正确的,但只需要改变一些东西。
答案 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"