【问题标题】:Read multiple strings from a file as a different variables.从文件中读取多个字符串作为不同的变量。
【发布时间】:2016-02-09 06:37:06
【问题描述】:

继续How to read multiple strings in a file as a different variables:-

文件.conf:

####
#xyz

key name


/usr/bin/ /text/abc/

value pswd

现在我想写一个脚本来拥有两个像上面这样的变量

脚本.sh

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

请参考上述链接了解更多信息。

【问题讨论】:

  • 变量名不能是/usr/bin/,因为/不允许在变量名中。

标签: file shell scripting


【解决方案1】:

您必须有一种方法可以忽略有效 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

【讨论】:

  • 是否可以将 /text/abc/ 分配给 /usr/bin/ & echo 来验证这一点?
  • 正如我上面评论的那样,/text/abc/ 不是一个有效的 unix 变量名
猜你喜欢
  • 2016-02-09
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多