2020-04-07 shell-quote を使った
npm:shell-quote を使った。
shell-quote はシェルコマンドの quote や parse をする npm パッケージ。
child_process.exec()
は標準出力やエラー出力を文字列で返してくれて手軽にコマンドを実行できる。ただそのままシェルに文字列を渡されてしまうので適切にエスケープする必要がある。ドキュメントに強調して書いてある。
Never pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution.
そこで shell-quote を使う。変数やパイプなどは適切にエスケープされる。公式にある例を↓に示す。
var quote = require('shell-quote').quote;
var s = quote([ 'a', 'b c d', '$f', '"g"' ]);
console.log(s); // a 'b c d' \$f '"g"'
便利だ。
ちなみに child_process.spawn()
は args: string[]
を取れるので shell
オプションを使わなければシェル関連のエスケープは気にしなくても良さそうだ。実装としては exec
-> execFile
-> spawn
なので最終的にはどれも spawn
につながる。
朝寝坊した。朝活の連続記録が止まってしまった。もう数えていなかったけど。
昼と夜で ABC040 を解いた 。 C は典型 DP だし、 D も制約的に Union-Find 以外が思いつかなかった。