我在运行当前程序时遇到一些问题。我需要获取客户信息文件(每一行都是一个新客户)并将其替换为模板。每个客户信息都将从模板创建一个文件,并使用客户的电子邮件进行命名,并使用awk
和放入电子邮件子目录中sed
。现在我的程序除了打印该行之外没有“做任何事情” ./test.bash: line 19: Emails/: Is a directory
。
1 #!/bin/bash
2 set -e
3
4 if [ "$#" -ne 1 ]; then
5 echo "Illegal number of parameters. Usage:./test1.bash <mm/dd/yyyy>"
6 exit 1
7 fi
8
9 OUTPUT_DIR="Emails"
10 details="p4Customer.txt"
11 template="template.txt"
12 date=$1
13 if [ ! -d "$OUTPUT_DIR" ]; then
14 mkdir -p "$OUTPUT_DIR"
15 fi
16
17 gawk -f g2.awk -v date="$date" "$details" | while read detail;
18 do
19 sed "$detail" "$template" > "$OUTPUT_DIR/$email"
20 done;
awk 文件
1 BEGIN{ FS=",";}
2 {
3 email=$1;
4 fullname=$2;
5 title=$3;
6 n=split(fullname,A," ");
7 name=A[n];
8 amount_owed=$5;
9 if($5>$4)
10 printf "s/EMAIL/%s/;s/FULLNAME/%s/;s/TITLE/%s/;s/NAME/%s/;s/AMOUNT/%s/;s/DATE/%s/\n", email, fullname, title, name, amount_owed, date;
11 }
12 END{}
答案1
线路
sed "$detail" "$template" > "$OUTPUT_DIR/$email"
使用仅为不影响 shell 环境而email
定义的参数。awk