2013-07-16 143 views
1

對不起,混淆你,打印字段到終端命令

很好,其實我想發送串行消息,我的Arduino被連接到/ dev/ttyACM0,它可以通過鍵入此命令到終端

完成
$ echo "Hello Arduino" > /dev/ttyACM0 

所以,我需要我的awk發送一個像這樣的命令。

這裏是我的PBH.awk文件:

BEGIN{ 
    FS = "[ .]"; 
    RS = "\0"; 
    IGNORECASE = 1; 
}{ 
    for (i=1;i<NF;i++){ 
     if(i == 1){ 
     printf("Diketahui : %s\n",$18);} 
     if($i=="y" && $(i+1)=="=") 
      { 
       printf("  Persamaan : %s %s %s %s %s %s %s %s %s %s %s\n",$(i),$(i+1),$(i+2),$(i+3),$(i+4),$(i+5),$(i+6),$(i+7),$(i+8),$(i+9),$(i+10)) 
       inisialisasi = "stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts" 
       kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0" 
       print | inisialisasi 
       print | kirim 
      } 
    } 

} 

這裏是soalPBH.txt:

Persamaan gelombang berjalan pada seutas tali dinyatakan dengan y = 0,02 sin (20 π t – 0,2 π x). Jika x dan y dalam cm dan t dalam sekon, tentukan: 

然後我跑我的awk與

$ awk -f PBH.awk soalPBH.txt 

我的程序犯規發送字段號爲2的文字。 這是否有問題?

kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0" 
+0

我沒有看到你在代碼中的任何地方調用'awk'。 'echo'是一個shell命令。 'print'和'printf(「%s ...」,$ 1,$ 2,...)是用於寫入輸出的'awk'方法。祝你好運。 – shellter

+0

對不起,我在那裏添加了我的完整代碼 – user2588680

回答

0

其非常不清楚你要做什麼。是這樣的:

$ cat file 
field1 field2 field3 

$ awk '{printf "echo \"Hello Arduino %s\" > /dev/ttyACM0\n", $2}' file 
echo "Hello Arduino field2" > /dev/ttyACM0 

如果不是,請說明您的問題,並提供一些明確的示例輸入和預期輸出。

鑑於你的更新問題,只要將報價SO 2 $是引號,而不是他們的內外部,即"$2而不是$2"

kirim = "echo \"Field2 contains: " $2 "\" > /dev/ttyACM0" 

然後告訴我們,如果你仍然有問題。

+0

謝謝你的作品就像一個魅力! – user2588680