Bash

如果文件不存在,bash 重定向到文件

  • January 26, 2019

我有這個 bash 程式碼:

 if [[ ! -f "$HOME/.oresoftware/package.json" ]]; then
      cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json";
   fi

但是有沒有辦法只在一行程式碼中不存在文件時才重定向到文件?像這樣的東西:

  cat "node_modules/@oresoftware/package.json" ?> "$HOME/.oresoftware/package.json";

我想那會很有趣

如果您設置該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"

引用自:https://unix.stackexchange.com/questions/443595