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
入力を待つと言ってください)
答え1
?
標準入力から入力を受け取る方法は次のとおりです。文書は次のとおりです。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
)
または、ここで文書をキャンセルし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'