如何计算和检查传递的参数?

时间:2011-06-04 19:42:39

标签: ruby bash command-line

如何将以下Ruby代码翻译成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

3 个答案:

答案 0 :(得分:5)

#!/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

答案 1 :(得分:4)

以下内容应该是您所需要的:

#!/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

如果您想学习bash,请参阅TLDP bash指南,请参阅TDLP Bash guide

答案 2 :(得分:2)

也许:

#!/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