2016-11-23 136 views
0

我一直在尋找這個例子在這裏:執行Node.js的文件中bash腳本

https://bbs.archlinux.org/viewtopic.php?id=168479

它說我可以執行JS/Node.js的是這樣的:

#!/bin/sh 
exec node --harmony <<EOF 
console.log("hello") 
EOF 

不對任何人都有意義?究竟發生了什麼?

一些谷歌搜索看起來像這樣將EOF字符之間的數據拉到標準輸入。

如果這是可能的,它將允許我解決一個特定的問題 - 即使用用戶$ PATH中的任何可執行節點,同時仍然傳遞節點可執行標誌(在本例中爲「--harmony」)。

如果你看看鏈接,你只需要稍微查看一下上面的代碼。

任何人都可以解釋這個EOF語法是關於什麼的?

一個具體的問題,我有,是我無法運行此代碼:

enter image description here

我的猜測是,我們通過標準輸入到Node.js的可執行文件,以及由於某種原因,它不能正確解析路徑 -

enter image description here

即使cli.js是在同一個目錄中cli-inspect.sh,需要功能無法正常工作。在第一行中,我們看到__dirname是「。」,通常情況並非如此。

+0

對你而言,我不清楚你的問題。 –

+0

這是什麼「EOF EOF語法? –

+0

它是'Here Document' https://en.wikipedia.org/wiki/Here_document#Unix_shells –

回答

1

正如你的問題的評論中提到的那樣,這是一個heredoc。它從<<EOF中選擇所有文本到EOF的第一個實例。您可以使用其他標記名稱,而不僅僅是EOF

它允許你定義一個文本塊,包括換行符。

的語法具有

echo 'console.log("hello")' | exec node --harmony 

在於其管道定界符的內容到節點等同的效果。但你可以包括很好的換行符。