2015-09-05 52 views
0

內容我希望得到一個FIFO的內容,並在文件打印出來,和我有這樣的代碼:打印先進先出在bash

path=$1 #path file get from script's input 
    if [ -p "$path" ];then #check if path is pipe 

     content = 'cat "$path"' 
     echo "$content" > output 
     exit 33 

    fi 

我的問題是,當我執行cat "$path"線停止腳本和終端顯示下劃線。 我不知道如何解決這個問題

PS的FIFO不爲空,output是我要打印FIFO的內容

回答

1

如果FIFO不爲空的文件,不再有任何寫入該FIFO的文件描述符,您將在cat命令中獲得EOF。從man 7 pipe

如果所有文件描述符指的是管道的寫端已經 關閉,然後嘗試讀取(2)從管會看到最終的文件 (讀取(2)將返回0)。

來源:man7.org/linux/man-pages/man7/pipe.7.html

1

你的賦值語句是不正確。

  1. =左右的空格是不允許的。
  2. 你在單引號和反引號混淆。但是,無論如何,您應該使用$(...)進行命令替換。

正確分配是

content=$(cat "$path") 

或更有效地在bash

content=$(< "$path")