我们使用ksh
脚本来安装一个产品。
我有另一个配置文件,我需要从我的主脚本中读取此配置文件
配置文件内容:
BPWS_Instance_1:Linux:x86_64:YES:/hosting/download:BPWS_Linux_64.jar
paymon_Instance_1:Linux:i686:YES:/hosting/download:paymon_Linux_32.jar
所以现在在我的主脚本中阅读配置文件后如果我已经BPWS_Instance_1(这是实例名称)正在运行(是的= 运行 ) 在 Linux 操作系统 64 位处理器上 (Linux:x86_64)然后我需要得到BPWS_Linux_64.jar来自该位置的文件/托管/下载。
答案1
根据您想要对数据执行的操作,有两种主要方法。
您可以解析 ksh 中的数据。使用循环使用内置函数逐行读取数据read
,指定:
为分隔符。这使您可以将输入分成几列,并对这些列执行您想要的操作。我的示例代码将指定文件从指定位置复制到当前目录,并在实例运行时执行此操作;将循环体调整为您想要执行的任何操作。
while IFS=: read instance_name os arch running location filename junk; do
if [ "$running" = "YES" ]; then
cp "$location/$filename" .
fi
done <Configuration
如果您需要对数据进行一些文本处理,awk 将是首选工具。在这里,您必须执行额外的工作来处理数据,因此它比while … read …
.
awk -F ':' '
$4 == "YES" {
ENVIRON["location"] = $5;
ENVIRON["$filename"] = $6;
system("cp \"$location/$filename\" .");
}
' <Configuration