2017-05-22 14 views
0

TLSを使用するようNPMを設定しています(これは無関係です)。私はbashでコマンド置換がどのように機能するかでいくつかの混乱があります。..

public.pemの内容に私の.npmrcに証明書のフィールドを設定することを目的として、私は次のコマンドnpm config set cert "$(cat public.pem)"

このコマンドの動作 を発行しています

次の私は、このコマンドは黙って失敗し、空に私の.npmrcにキーフィールドを設定するコマンドに npm config set key "$(cat private.pem)"

を発行します。

プライベートキーファイルは標準-----BEGIN RSA PRIVATE KEY-----で始まり、私の公開鍵はBag Attributesで始まるようです。ダッシュで始まるファイルが私のコマンド置換を台無しにしているようです。

思考?

+0

の作品に対し

npm config set key ----が失敗し、それはおそらく* UUOc *(cat' 'を不必要に使用)です。 @chorobaの答えに示されているリダイレクションは、ジョブの適切なツールであり、別のサブシェルの生成を回避します。 –

+2

'$(...)'は*コマンド*置換です。プロセス置換は異なる構造である。 – chepner

+0

ありがとう、更新された質問/タイトル –

答えて

4

catはどこで失敗しましたか?

npm config set key "$(cat private.pem)" 

あなたも少し速くcatを呼び出すよりもあるべき

$(< private.pem) 

を使用することができます。

+0

npm configコマンドは単に出力なしで戻る。私はどこに猫が行くのか分からない。私は '' $(<...) ''フォームも同様の結果で試しました。具体的に 'catted'ファイルがダッシュで始まると、 –

+1

@MatthewKirkleyと思われます。あなたはチョロバの答えを誤解しています。あなたの最初の(働いている)コマンドは '$(cat public.pem)'を持ち、2番目のコマンドは '$(private.pem)'を持っています。 2番目のコマンドに 'cat'がありません。 –

+0

おっと、申し訳ありませんが、これは私の誤植です。私は質問を更新しました –

0

もう少し調査した後、これはコマンドの置換には問題ありません。 npm config set....は、ダッシュで始まる入力を無視しているようです。あなたは `cat`をやっているし、あなたが実際にはありません*他のファイルと*` file`を連結した場合npm config set key 1234

+0

'' 'npm config set key" ---- "' ''が失敗しました –

+0

'npm-config set key ----'または 'npm config set key - - '? – choroba

+1

@MatthewKirkley: 'npm'(またはコマンドラインユーティリティ)に関する限り、引数' ---- 'と引数' '----" 'の間には全く違いはありません。引数をユーティリティに渡す前に引用符で囲みます。 – rici