2015-11-08 24 views
0

How to read multiple strings in a file as a different variables延续: -从文件中读取多个字符串作为不同的变量。

file.conf:

#### 
#xyz 

key name 


/usr/bin/ /text/abc/ 

value pswd 

现在我想编写一个脚本来有两个变量像上面

script.sh

key="name"  #key as variable 
value="pswd" #value as variable 
/usr/bin/=/text/abc/  

请有关更多信息,请参阅上述链接。

+0

变量名称不能在'/ usr/bin /'中,因为'/'在变量名称中是不允许的。 – anubhava

回答

0

你必须有一种方法来忽略有效的unix变量名无效的行的行。在UNIX变量遵循以下规则:

开始以下划线或字母后跟0或多个字母数字或下划线

使用这个规则,你可以在BASH使用这个脚本:

while read k v; do 
    [[ $k =~ ^[_[:alpha:]][[:alnum:]_]*$ ]] && declare $k="$v" 
done < conf.file 

这将忽略所有以#或/usr/bin开头的空白行或行。

在ksh中试试这个:

while read k v; do 
    [[ $k =~ ^[_[:alpha:]][[:alnum:]_]*$ ]] && eval $k="$v" 
done < conf.file 
+0

是否有指定/ text/abc/to/usr/bin /&echo来验证此? – user3527785

+0

正如我上面评论说'/ text/abc /'不是一个有效的unix变量名 – anubhava

相关问题