awk命令在控制台中工作,但不在shell脚本中工作

问题描述:

我正在使用以下命令过滤文件中的第四列。它在控制台中工作正常awk命令在控制台中工作,但不在shell脚本中工作

[[email protected] Now]$ creationTime="8:15 PM" 
[[email protected] Now]$ awk -F, -v var="$creationTime" '{if($4==var) print}' input.txt 
serial1,tech,EU,8:15 PM,gan 

在shell脚本中添加了相同的命令,但它不起作用。

$ cat test.sh 
creationTime=$(date -d '330 minutes' +"%l:%M %p") 

echo $creationTime 
awk -F, -v var="$creationTime" '{if($4==var) print}' input.txt 

输出,同时execting脚本

[[email protected] Now]$ sh test.sh 
8:15 PM 

input.txt中

serial1,tech,APAC,8:09 PM,anz 
serial1,tech,EU,8:15 PM,gan 
+0

由于时间是在脚本动态计算,时间戳可能根本就不是被'input.txt' – hek2mgl

的问题可能是$creation_time包含前导空格。当您使用echo检查它时,它们可能不可见,但它们绝对不会匹配$4awk。例如:

$ creationTime=$(date -d '330 minutes' +"%l:%M %p") 
$ echo ">${creationTime}<" 
> 4:50 PM< 

尝试,而不是:

creationTime=$(date -d '330 minutes' +"%l:%M %p" | sed 's/^ *//') 
+0

谢谢你的一部分很多..这工作! –