このbashコードがあります。
if [[ ! -f "$HOME/.oresoftware/package.json" ]]; then
cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json";
fi
しかし、1行のコードにファイルがない場合にのみそのファイルにリダイレクトする方法はありますか?このような:
cat "node_modules/@oresoftware/package.json" ?> "$HOME/.oresoftware/package.json";
楽しかったようです。
答え1
このnoclobber
オプションを設定すると、bashは既存のファイルの上書きを拒否します。
$ set -C # or set -o noclobber
$ touch foo
$ cat bar > foo
bash: foo: cannot overwrite existing file
だから:
set -C
cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json"
終了状態を無視するには、コマンド!
の前に追加するだけです。cat
set -C; ! cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json"