读取文件内容并使用ksh分割

读取文件内容并使用ksh分割

我们使用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

相关内容