chmod + mode diam + cara memaksa kode keluar 0 terlepas dari kesalahan

37

Apakah mungkin menjalankan chmod dan mengabaikan kesalahan dari perintah

Contoh (komentar file.txt tidak ada untuk menunjukkan contoh)

Saat saya mengetik

chmod 777 file.txt

Saya mendapatkan kesalahan pada output

  chmod: cannot access file.txt : no such file or directory

Jadi saya menambahkan flag-f ke perintah sebagai berikut: (file.txt tidak ada untuk menunjukkan case)

  chmod -f 777 file.txt
  echo $?
  1

Tetapi dari contoh chmod return 1

Mohon saran bagaimana memaksa perintah chmod untuk memberikan kode keluar 0 meskipun ada kesalahan

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Mengapa itu dibalik? Menekan output yang tidak diinginkan dengan 2>/dev/nulldan digunakan set -edalam skrip.
ott--

Jawaban:

47

Mohon saran bagaimana memaksa perintah chmod untuk memberikan kode keluar 0 meskipun ada kesalahan

chmod -f 777 file.txt || :

Ini akan mengeksekusi :, yaitu perintah nol, jika chmodgagal. Karena perintah nol tidak melakukan apa pun kecuali selalu berhasil, Anda akan melihat kode keluar 0.

devnull
sumber
25
Setara, tetapi lebih mudah dibaca untuk pengguna biasa adalah untuk digunakanchmod -f 777 file.txt || true
orion
2
@atau Tergantung. Jika seseorang terbiasa, maka :tampaknya sama-sama dapat dibaca.
devnull
2
Tetapi jika kita menulis kode yang lebih mudah dibaca yang bisa dibaca oleh noobs, bagaimana kita akan mempertahankan pekerjaan kita?
Nick T
1
Koki pengembang di sini, hanya menjatuhkan beberapa kata kunci untuk membantu orang lain yang mengalami masalah yang sama yang saya miliki. shell_out! (cmd + '|| true') adalah penyelamat saat Anda mencoba menjadi idempoten dengan instalasi dan perlu mengabaikan shell_out! kompilasi kesalahan.
JackChance
54

chmod -f 777 file.txt || true

Karena ini OR, jika salah satu pernyataan mengembalikan true, maka pengembaliannya benar. Ini menghasilkan status keluar nol.

Gerry
sumber
3
Saya menambahkan jawaban ini sebagai alternatif untuk mempromosikan praktik menulis kode yang dapat dibaca.
Gerry
2
Cabang yang tepat dari ||tidak akan dieksekusi jika chmodberhasil ... bukannya itu membuat banyak perbedaan komputasi di sini.
Dhag
Terima kasih untuk itu. Aku tidak percaya aku mengacaukannya. :) Diedit dengan koreksi.
Gerry
5

Saya selalu mencintai

 chmod -f 777 file.txt || exit 0
Eran Chetzroni
sumber
3
Ini membuat skrip berhenti ketika chmod tidak berhasil. Pertanyaannya adalah membuat skrip terus berjalan ketika ada masalah dengannya (abaikan kesalahan).
Veda