emurad
emurad

Reputation: 3578

How to count and check passed arguments?

How can I translate the following Ruby code to Bash?

if ARGV.length == 0
    abort "\nError: The project name is required. Aborting...\n\n"
elsif ARGV.length > 2
    abort "\nError: The program takes two arguments maximum. Aborting...\n\n"
end

Upvotes: 6

Views: 5910

Answers (3)

Cosmin Cosmin
Cosmin Cosmin

Reputation: 1556

Maybe:

#!/bin/bash

function functionName {
if [ $# = 0 ]
then echo "\nError: The project name is required. Aborting...\n\n"; exit 1
fi

if [ $# \> 2 ]
then echo "\nError: The program takes two arguments maximum. Aborting...\n\n"; exit 1
fi

}

functionName a

Upvotes: 2

MGwynne
MGwynne

Reputation: 3522

The following should be what you need:

#!/bin/bash
if [ $# -eq 0 ]; then
  echo -e "\nError: The project name is required. Aborting...\n\n"
  exit 1
elif [ $# -gt 2 ]; then
  echo -e "\nError: The program takes two arguments maximum. Aborting...\n\n"
  exit 1
fi

The TLDP bash guide is very good if you are looking to learn bash, see TDLP Bash guide.

Upvotes: 4

Seth Robertson
Seth Robertson

Reputation: 31461

#!/bin/bash
USAGE="$0: <project name> [subproject attribute]"
if [ $# -lt 1 ]; then echo -e "Error: The project name is required.\n$USAGE" >&2; exit 1; fi
if [ $# -gt 2 ]; then echo -e "Error: Two arguments maximum.\n$USAGE" >&2; exit 1; fi

Upvotes: 5

Related Questions