Bash skrip dengan kondisi ATAU

0

Berharap seseorang di sini dapat membantu saya dengan skrip bash yang hanya berjalan pada kondisi tertentu.

#!/bin/bash
TODAY=`date +%Y-%m-%d`
MODE=$1
if  [ $(date '+%A') == "Sunday" ] || [ $(date '+%d') == "01" ] || [ $MODE == 'Complete']
then
    echo "Running backup as it is the either a Sunday the 1st of the Month or the script was called with the paramater 'Complete'."
    /usr/bin/7z a -t7z -m0=lzma -mx=9 /external-storage/snapshots/snapshot-complete-"$TODAY"-public_html.7z /local-storage/www/public_html > /dev/null
fi

Ketika saya mencoba menjalankan di atas saya mendapatkan kesalahan.

line 4: [: missing `]'

Setiap tips akan dihargai, terima kasih sebelumnya.

British Sea Turtle
sumber

Jawaban:

1

Saya akan mencoba seperti ini:

#!/bin/bash
TODAY=`date +%Y-%m-%d`
MODE=$1
DAY=$(date '+%A')
DATE=$(date '+%d')
if  [[  ($DAY == "Sunday")   ||  ($DATE == "01")  ||  ($MODE == "Complete") ]] ; then
    echo "Running backup as it is the either a Sunday the 1st of the Month or the script
    was called with the parameter 'Complete'."
 ...................
fi

Beberapa tanda kurung hanya ada untuk kejelasan.

Tapi kamu harus hati-hati, tes kamu tidak mencerminkan apa yang ditegaskan oleh pernyataan gema Anda. Tes ini dinilai positif untuk APAPUN hari Minggu, bukan hanya yang pertama di bulan itu.

MariusMatutiae
sumber
1

Itu ] khusus dan perlu sendiri. Anda kehilangan ruang sebelum yang terakhir.

Jadi baris 4 seharusnya:

if  [ $(date '+%A') == "Sunday" ] || [ $(date '+%d') == "01" ] || [ $MODE == 'Complete' ]
Noyo
sumber