需要从文件中传递多个值作为参数

需要从文件中传递多个值作为参数

文件包含:

Firstname=ABC
Lastname=XYZ
Country=USA

Firstname=DEF
Lastname=UVW
Country=UK

需要将Firstname,lastnameCountry作为参数传递给脚本中的函数,并对第二组重复相同的操作,依此类推。

函数用法:如果其中任何一个丢失,那么Country=它应该退出,如果所有 3 个参数都有值,则应该执行命令。

答案1

也许尝试这样的事情?

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         }
      }' input_file.txt

/path/to/your/script我通过替换来尝试它echo,它确实以正确的顺序显示了字段。

请注意,如果给定的名字、姓氏、国家/地区组合缺少某个字段,则该命令将不会针对该特定组合运行,并且会直接跳到下一个。

如果您希望 awk 命令在遇到空字段时以非零返回代码退出,并且不尝试对下一个组合运行该命令,请尝试以下操作:

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         } else {
             print "error: empty field in input file !";
             exit 1
         }
      }' input_file.txt

然后您可以在 shell 变量中测试您的返回代码$?。如果它不为零,则说明输入文件中的某处缺少某个字段,并且该缺失字段及其后的所有命令都不会运行。

相关内容