2011-12-12 112 views
3

我有簡單的bash腳本:AWK語法錯誤 - 是什麼導致它?

#!/bin/sh 
column=${1:-1} 
awk ' {colawk='$column'+2; print $colawk}' 
awk '(x=4; print $x)' 

但我收到錯誤:

awk: (x=4; print $x) 
awk: ^syntax error 
awk: cmd. line:1: (x=4; print $x) 
awk: cmd. line:1:    ^unexpected newline or end of string 

爲什麼?前一行中的代碼有效。

回答

2

你的問題是用圓括號代替大括號。嘗試:

awk '{x=4; print $x}' 

代替,如下面的轉錄物:

pax$ echo a b c d e | awk '(x=4; print $x)' 
awk: cmd. line:1: (x=4; print $x) 
awk: cmd. line:1: ^syntax error 
awk: cmd. line:2: (x=4; print $x) 
awk: cmd. line:2:    ^unexpected newline or end of string 

pax$ echo a b c d e | awk '{x=4; print $x}' 
d 
4

的AWK程序在一系列圖案動作對,寫爲:

condition { action } 

其中condition通常是表達式和action是一系列命令。

print不是表達而是語句,所以它是語法錯誤如預期的那樣。