我有成功在命令行下執行命令:問題與AWK shell變量
ls -l | awk '/Sep 26/{split($8,a,":");if(a[1]a[2]>=1045 && a[1]a[2]<=1145)print $9}'
我包括以下shell腳本同樣的事情:
#!/bin/ksh
date1=$1
date2=$2
time1=$3
time2=$4
ls -l| awk -v d1=${date1} -v d2=${date2} -v t1=${time1} -v t2=${time2} '/d1 d2/{split($8,a,":");if(a[1]a[2]>=t1 && a[1]a[2]<=t2) print $9}'
但這不work.please看到下面的執行
ksh -vx test.sh Sep 26 1045 1145
#!/bin/ksh
date1=$1
+ date1=Sep
date2=$2
+ date2=26
time1=$3
+ time1=1045
time2=$4
+ time2=1145
ls -l| awk -v d1=${date1} -v d2=${date2} -v t1=${time1} -v t2=${time2} '/d1 d2/{split($8,a,":");if(a[1]a[2]>=t1 &&a[1]a[2]<=t2)print $9}'
+ awk -v d1=Sep -v d2=26 -v t1=1045 -v t2=1145 /d1 d2/{split($8,a,":");if(a[1]a[2]>=t1 &&a[1]a[2]<=t2)print $9}
+ ls -l
awk: syntax error near line 1
awk: bailing out near line 1
我使用的Solaris操作系統:我現在已經與NAWK嘗試,但有沒有錯誤,但也沒有輸出。
pearl[[email protected]].293> ksh -vx test.sh Sep 26 1045 1145
#!/bin/ksh
date1=$1
+ date1=Sep
date2=$2
+ date2=26
time1=$3
+ time1=1045
time2=$4
+ time2=1145
ls -l| nawk -v d1=${date1} -v d2=${date2} -v t1=${time1} -v t2=${time2} '/d1 d2/{split($8,a,":");if(a[1]a[2]>=t1 &&a[1]a[2]<=t2)print $9}'
+ ls -l
+ nawk -v d1=Sep -v d2=26 -v t1=1045 -v t2=1145 /d1 d2/{split($8,a,":");if(a[1]a[2]>=t1 &&a[1]a[2]<=t2)print $9}
當我正在執行完內部腳本中的shell變量。
* 注意: *我正在使用Solaris操作系統。
我想通了,問題就出在shell腳本里面的最終框架命令:
ls -l|nawk -v d1=Sep -v d2=26 -v t1=1045 -v t2=1145 '/d1 d2/{split($8,a,":");if(a[1]a[2] >=t1 && a[1]a[2]<=t2)print $9}'
,但我不知道這是爲什麼沒能給出正確的輸出與-v標誌
'awk --v'。此外,這與shell變量有什麼關係?如果你直接調用它而沒有變量替換,它會起作用嗎? –