Saya ingin menggabungkan beberapa kondisi dalam pernyataan if shell, dan meniadakan kombinasi. Saya memiliki kode kerja berikut untuk kombinasi kondisi sederhana:
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then
# do stuff with the files
fi
Ini berfungsi dengan baik. Jika saya ingin meniadakannya, saya dapat menggunakan kode kerja berikut:
if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then
echo "Error: You done goofed."
exit 1
fi
# do stuff with the files
Ini juga berfungsi seperti yang diharapkan. Namun, terpikir olehku bahwa aku tidak tahu apa yang sebenarnya dilakukan kurung di sana. Saya ingin menggunakannya hanya untuk pengelompokan, tetapi apakah ini benar-benar menghasilkan subkulit? (Bagaimana saya bisa tahu?) Jika demikian, apakah ada cara untuk mengelompokkan kondisi tanpa menelurkan subkulit?
if [[ ! -f file1 ]] && [[ ! -f file2 ]]; then
if [ ! 1 -eq 2 ] && [ ! 2 -eq 3 ]; then echo yep; fi
dan berhasil. Saya selalu menulis tes dengan kawat gigi ganda sebagai kebiasaan. Juga, untuk memastikannya tidak bash
, saya diuji lebih lanjut if /bin/test ! 1 -eq 2 && /bin/test ! 2 -eq 3 ; then echo yep; fi
dan berfungsi seperti itu juga.
[ ! -e file/. ] && [ -r file ]
akan menjatuhkan direktori. Meniadakannya sesuka Anda. tentu saja, itulah yang -d
dilakukannya.
if ! [ -f file1 ] || ! [ -f file 2 ] || ! [ -f file3 ] ; then
tapi saya ingin jawaban yang lebih umum.