Bash、无参数警告和案例判决

我在学 Bash。

我想做一个简单的脚本,当没有给出参数时,显示一些信息。当我给数字作为参数,s 取决于它的值时,它会做这样或那样的事情。

我还想知道对 bash 初学者最好的在线手册的建议

谢谢

108762 次浏览
if [[ $# -eq 0 ]] ; then
echo 'some message'
exit 0
fi


case "$1" in
1) echo 'you gave 1' ;;
*) echo 'you gave something else' ;;
esac

高级 Bash 脚本指南是相当不错的。尽管它的名字,它确实治疗的基础。

例子

 if [ -z "$*" ]; then echo "No args"; fi

结果

No args

细节

- z 是字符串长度为零的一元运算符。 $*都是参数。 这些引号是为了安全起见,并且如果存在的话,还可以封装多个参数。

使用 man bash并搜索(/键)“一元”以获得更多类似的操作符。

如果只有在缺少某个特定参数的情况下才对纾困感兴趣,那么 参数替换就很棒:

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

老了,但由于之前的一些困惑,我现在有理由重新回答这个问题:

if [[ $1 == "" ]] #Where "$1" is the positional argument you want to validate


then
echo "something"
exit 0


fi

如果没有位置参数 $1,这将回显“ Something”。但是,它不验证 $1是否包含特定信息。