How to check if there are no parameters provided to a command?

How do you check if $* is empty? In other words, how to check if there were no arguments provided to a command?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

To check if there were no arguments provided to the command, check value of $# variable then,

if [ $# -eq 0 ]; then
    echo "No arguments provided"
    exit 1
fi

If you want to use $*(not preferable) then,

if [ "$*" == "" ]; then
    echo "No arguments provided"
    exit 1
fi

Some explanation:

The second approach is not preferable because in positional parameter expansion * expands to the positional parameters, starting from one. When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS special variable. That means a string is constructed. So there is extra overhead.

On the other hand # expands to the number of positional parameters.

Example:

$ command param1 param2

Here,

Value of $# is 2 and value of $* is string “param1 param2” (without quotes), if IFS is unset. Because if IFS is unset, the parameters are separated by spaces

For more details man bash and read topic named Special Parameters

Method 2

If you’re only interested in bailing if a particular argument is missing, Parameter Substitution is great:

#!/bin/bash
# usage-message.sh

: ${1?"Usage: $0 ARGUMENT"}
#  Script exits here if command-line parameter absent,
#+ with following error message.
#    usage-message.sh: 1: Usage: usage-message.sh ARGUMENT

Method 3

this is one of the ways you can know that you havent got any arguments

NO_ARGS=0
if [ $# -eq "$NO_ARGS" ]; then
    {do something}
fi


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x