mercredi 4 décembre 2019

How to use elif with && and -o in a bash script properly

Bash version 4.4.20
Ubuntu 16.04

I need to compare time and extensions for a particular project I have. Below is something similar to what I am trying to do but the error is the same. I am not sure where exactly the error is as shellcheck is not producing one.

#!/bin/bash
#

while read -r filename; do
  extension="${filename##*.}"
  if [ "$extension" == "zip" ] && [ "$filename" == "one.zip" ]; then
    echo "Filename is $filename"
  elif [ "$extension" == "zip" ] && [ "$filename" == "file_1.zip" ] -o [ "$filename" == "file_2.zip" ] -o [ "$filename" == "file_3.zip" ]; then
    echo "Filename is $filename"
  elif [ "$extension" == "csv" ] && [ "$filename" == "two.csv" ]; then
    echo "Filename is $filename"
  else
    echo "Filename is $filename"
  fi
done<fileList.txt  

Error:

Filename is one.zip
check.sh: line 8: [: too many arguments
Filename is file_1.zip
check.sh: line 8: [: too many arguments
Filename is file_2.zip
check.sh: line 8: [: too many arguments
Filename is file_3.zip
Filename is two.csv
Filename is three.sql

Aucun commentaire:

Enregistrer un commentaire