chmod + sessiz mod + hataya rağmen çıkış kodunu 0 zorla


37

Chmod çalıştırmak ve komuttan hatayı yoksaymak mümkün mü

Örnek (örnek olarak göstermek için file.txt dosyası mevcut değil)

Yazarken

chmod 777 file.txt

Çıktıda hata alıyorum

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

Bu yüzden f komutuna aşağıdaki komutu ekliyorum: (vakayı göstermek için file.txt mevcut değil)

  chmod -f 777 file.txt
  echo $?
  1

Ama örnek chmod dönüşünden 1

Lütfen chmod komutunu, hataya rağmen çıkış kodu 0 vermeye zorlamanızı tavsiye edin


Bu neden yükseltildi? İstenmeyen çıktıları ile bastırın 2>/dev/nullve set -ekomut dosyalarında kullanın .
ott--

Yanıtlar:


47

Lütfen chmod komutunu, hataya rağmen çıkış kodu 0 vermeye zorlamanızı tavsiye edin

chmod -f 777 file.txt || :

Bu başarısız olursa :, yani null komutu yürütür chmod. Null komutu hiçbir şey yapmaz fakat her zaman başarılı olursa, 0 çıkış kodunu görürsünüz.


25
Sıradan bir kullanıcı için eşdeğer, ancak daha okunaklı olan kullanmaktırchmod -f 777 file.txt || true
orion

2
@orion bağlıdır. Eğer biri aşina ise, o zaman :eşit derecede okunaklı görünüyor.
devnull

2
Ancak noobların okuyabileceği daha okunaklı bir kod yazarsak işlerimizi nasıl tutarız?
Nick T,

1
Burada şef geliştirici, sadece aynı sorunla karşılaştı başkalarına yardımcı olmak için bazı anahtar kelimeler bırakarak. shell_out! (cmd + '|| true'), yüklemelerle ilgili iddiasız olmaya çalıştığınız ve shell_out! hataları derle
JackChance,

53

chmod -f 777 file.txt || true

Bir OR olduğundan, ifadelerden biri doğru olursa, dönüş doğrudur. Bu, sıfır çıkış durumuna neden olur.


3
Uygulamaya okunabilir kod yazmayı teşvik etmek için bu cevabı alternatif olarak ekledim.
Gerry

2
Başarılı ||olursa chmod, haklı dal hakkı elde edilemez ... burada çok fazla bir hesaplama farkı yarattığı söylenemez.
dhag

Bunun için teşekkür ederim. Bunu mahvettiğime inanamıyorum. :) Düzeltme ile düzenlendi.
Gerry

5

Ben her zaman sevdim

 chmod -f 777 file.txt || exit 0

3
Bu, chmod başarısız olduğunda komut dosyasını durdurur. Sorun, bir sorun olduğunda komut dosyasının çalışmaya devam etmesini sağlamaktı (yoksayma hatası).
Veda
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.