Saya mencoba melakukan pemeriksaan kondisi sederhana, tetapi sepertinya tidak berhasil.
Jika $#
sama dengan 0
atau lebih besar dari 1
maka katakan halo.
Saya telah mencoba sintaks berikut ini tanpa hasil:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
bash
unix
if-statement
sh
Stroberi
sumber
sumber
>
adalah redirection output di sh / bash. Sekarang Anda mungkin memiliki file dengan nama1
.Jawaban:
Ini seharusnya bekerja:
Saya tidak yakin apakah ini berbeda di shell lain tetapi jika Anda ingin menggunakan <,>, Anda harus meletakkannya di dalam tanda kurung ganda seperti:
sumber
Kode ini berfungsi untuk saya:
Saya tidak berpikir dia mendukung "==". Gunakan "=" untuk membandingkan string dan -eq untuk membandingkan int.
untuk lebih jelasnya.
sumber
-gt
besar dari. Atau ganti saja semuanya dengan[ $# -ne 1 ]
.Jika Anda menggunakan status kode keluar bash $? sebagai variabel, lebih baik melakukan ini:
Karena jika Anda melakukannya:
Bagian kiri OR mengubah $? variabel, jadi bagian kanan OR tidak memiliki $ asli ? nilai.
sumber
Terkadang Anda perlu menggunakan tanda kurung ganda, jika tidak Anda mendapatkan kesalahan seperti terlalu banyak argumen
sumber
Jika skrip bash
sumber
pernahkah Anda mencoba sesuatu seperti ini:
sumber
echo
halo bahkan ketika saya memiliki satu argumen.$#
mungkin nilai pengembalian tes pertama?Dari Manual Referensi Bash → 3.4.2 Parameter Khusus
Oleh karena itu,
$#
akan selalu berupa 0 atau bilangan bulat yang lebih besar.Jadi jika Anda ingin melakukan sesuatu setiap kali
$#
0 atau lebih besar dari 1, Anda hanya perlu memeriksa apakah$#
ada atau tidak1
:Ini menggunakan sintaks:
sumber
[[ -n $A ]] && echo 1 || echo 2
Dan di Bash
ATAU dalam Bash
sumber