我正在处理主要由 shell 和 Perl 文件组成的管道,所有这些文件都将参数(路径)传递给下一个。我决定使用单个文件来存储所有路径并为每个文件调用它会更好。问题是我使用 awk 来抓取每个文件开头的文件,结果证明是很多重复。
我的问题是:我不知道是否有办法将键值对存储在文件中,以便 shell 可以原生地对键执行操作并返回值?它需要访问外部文件,因为管道使用许多脚本,并且特定文件中的映射会导致参数被传递到任何地方。是否有一些我不知道的小怪癖在外部文件上执行地图功能?
您可以制作一个环境变量分配文件并根据需要获取该文件,即。
$ cat myEnvFile
path1=/x/y/z
path2=/w/xy
path3=/r/s/t
otherOpt1="-x"
在您的脚本中,您可以使用. myEnvFile
相同功能的任何一个或更详细的版本sourc myEnvFile
(假设 bash shell),即
$cat myScript
#!/bin/bash
. /path/to/myEnvFile
# main logic below
....
# references to defined var
if [[ -d $path2 ]] ; then
cd $path2
else
echo "no pa4h2=$path2 found, can't continue" 1>&1
exit 1
fi
根据您描述问题的方式,这应该可以正常工作,并为您的所有变量设置提供一站式服务。
IHTH