【问题标题】:Command Return as Variable命令返回变量
【发布时间】:2013-09-15 21:31:27
【问题描述】:
我在尝试从外部文件获取变量值时遇到问题。
我的问题是:是否可以从 for 中的文件中读取值,然后使用 cut 命令我可以获得 = 之前的信息,这将是变量,在 = 之后是值。这是我在下面尝试的,但这是不允许的:
for i in `cat $1`
do
`echo $i | cut -d= -f1`=`echo $i | cut -d= -f2`
done
$1 是作为参数传递的文件,它有 3 行,其中有一个变量和格式为 variable=value 的值。
有没有办法我可以做到这一点,而不是需要获取变量名,然后再获取这些变量值的另一个条件?或者即使我的代码是正确的,但只需要更改一些内容。
【问题讨论】:
标签:
file
shell
unix
for-loop
variable-assignment
【解决方案1】:
试试:
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
【解决方案2】:
你可以通过这个简单地做到这一点:
while read -r LINE; do
echo "${LINE#*=}" ## Delete all values before and including = then, echo it.
done < "$1"