Saya sedang mengerjakan skrip bash yang ingin saya gunakan untuk beberapa jenis VCS. Saya berpikir untuk menguji apakah direktori adalah repo untuk sistem dengan menjalankan perintah info khas dan memeriksa kode kembali, berhasil atau kesalahan. Dalam kode semu:
if a svn command succeded;
Then run svn commands
elif a darcs command succeded;
Then run darcs commands
elif a mercurial command succeded;
then run hg commands
else
something else
fi
Saya dapat menjalankan perintah, misalnya
darcs show repo
dan gunakan $?
untuk mendapatkan kode pengembaliannya.
Pertanyaan saya adalah: apakah ada cara yang rapi untuk menjalankan dan mengembalikan nomor kode pengembalian dalam satu baris? sebagai contoh
if [ 0 -eq `darcs show repo`$? ];
Atau apakah saya harus mendefinisikan suatu fungsi?
Persyaratan tambahan adalah stderr dan stdout harus dicetak.
sumber
Seperti yang telah disebutkan orang lain,
if command
tes apakahcommand
berhasil. Sebenarnya[ … ]
adalah perintah biasa, yang dapat digunakan di luarif
atauwhile
bersyarat meskipun itu tidak biasa.Namun, untuk aplikasi ini, saya akan menguji keberadaan direktori karakteristik. Ini akan benar dalam banyak kasus tepi. Versi Bash / ksh / zsh / dash (belum diuji):
sumber
Yah, itu tidak terlalu cantik, tapi itu salah satu cara untuk melakukannya sebaris:
Menurut definisi, jika menguji kode keluar dari suatu perintah, maka Anda tidak perlu melakukan perbandingan eksplisit, kecuali jika Anda menginginkan lebih dari keberhasilan atau kegagalan. Mungkin ada cara yang lebih elegan untuk melakukan ini.
sumber
Opsi ringkas lainnya adalah:
sumber