Saya mencoba untuk melakukan yang sederhana kondisi cek, tapi itu doesn't tampaknya bekerja.
Jika $#
sama dengan 0
atau lebih besar dari 1
kemudian mengatakan halo.
Saya telah mencoba sintaks berikut dengan sukses:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Ini harus bekerja:
#!/bin/bash
if [ "$#" -eq 0 ] || [ "$#" -gt 1 ] ; then
echo "hello"
fi
I'm tidak yakin jika ini adalah berbeda dalam kerang lainnya, tetapi jika anda ingin menggunakan <, >, anda perlu untuk menempatkan mereka dalam dua tanda kurung seperti ini:
if (("$#" > 1))
...
Kode ini bekerja untuk saya:
#!/bin/sh
argc=$#
echo $argc
if [ $argc -eq 0 -o $argc -eq 1 ]; then
echo "foo"
else
echo "bar"
fi
Saya don't pikir sh mendukung "==". Gunakan "=" untuk membandingkan string dan -eq untuk membandingkan int.
man test
untuk rincian lebih lanjut.
Jika anda menggunakan bash keluar kode status $? sebagai variabel, it's baik untuk melakukan hal ini:
if [ $? -eq 4 -o $? -eq 8 ] ; then
echo "..."
fi
Karena jika anda lakukan:
if [ $? -eq 4 ] || [ $? -eq 8 ] ; then
The bagian kiri ATAU mengubah $? variabel, sehingga bagian kanan ATAU doesn't harus asli $? nilai.
Jika bash script
If [[ $input -gt number || $input -lt number ]]
then
echo .........
else
echo .........
fi
exit
Dari Bash Referensi Manual → 3.4.2 Khusus Parameter
# ($#) Memperluas jumlah parameter posisi dalam desimal.
Oleh karena itu, $#
akan selalu baik 0 atau bilangan bulat yang lebih besar.
Jadi jika anda ingin melakukan sesuatu setiap kali $#
adalah 0 atau lebih besar dari 1, anda hanya perlu memeriksa jika $#
atau tidak 1
:
[ $# -eq 1 ] && echo "1 positional param" || echo "0 or more than 1"
Ini menggunakan sintaks:
[ condition ] && {things if true} || {things if false}
Dan di Bash
line1=`tail -3 /opt/Scripts/wowzaDataSync.log | grep "AmazonHttpClient" | head -1`
vpid=`ps -ef| grep wowzaDataSync | grep -v grep | awk '{print $2}'`
echo "-------->"${line1}
if [ -z $line1 ] && [ ! -z $vpid ]
then
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Process Is Working Fine"
else
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Prcess Hanging Due To Exception With PID :"${pid}
fi
ATAU di Bash
line1=`tail -3 /opt/Scripts/wowzaDataSync.log | grep "AmazonHttpClient" | head -1`
vpid=`ps -ef| grep wowzaDataSync | grep -v grep | awk '{print $2}'`
echo "-------->"${line1}
if [ -z $line1 ] || [ ! -z $vpid ]
then
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Process Is Working Fine"
else
echo `date --date "NOW" +%Y-%m-%d` `date --date "NOW" +%H:%M:%S` ::
"Prcess Hanging Due To Exception With PID :"${pid}
fi