Shell
dc和標準輸入還是帶有字元串命令的heredoc?
dc
可以從文件或/和標準輸入中讀取命令。如果我想列印使用者輸入:
cat essai_dc [enter a number : ] n ? p dc essai_dc enter a number : 4 4
現在,如果我嘗試使用
heredoc
:dc <<EOF > [enter a number : ] > n > ? > p > EOF enter a number : dc: stack empty
我對標準輸入也有同樣的看法:
cat essai_dc | dc enter a number : dc: stack empty
命令 ?獲取
p
並執行它,但堆棧是空的。是否有可能讓它工作(告訴
dc
等待輸入)
?
從標準輸入獲取輸入,這是這裡的文件。您需要將腳本提供給dc
使用不同的文件描述符。在帶有 的系統上/dev/fd/n
,可能帶有:dc /dev/fd/3 3<< 'EOF' [enter a number : ] n ? p EOF
或者您可以使用 ksh 樣式的程序替換(通常
/dev/fd/n
在下面使用):dc <(cat << 'EOF' [enter a number : ] n ? p EOF )
或者取消 here-document 和對(通常)外部
cat
實用程序的呼叫:dc <(printf %s \ '[enter a number : ] n ? p ' )
dc
像 GNU之類的一些實現dc
允許將dc
腳本的內容作為參數傳遞給-e
,因此您可以使用命令替換:dc -e "$(cat << 'EOF' [enter a number : ] n ? p EOF )"
或直接:
dc -e '[enter a number : ] n ? p'