Answers:
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脚本编程指南是相当不错的。尽管它的名字,它确实对待基础知识。
> /dev/null
和/或2> /dev/null
之后将其标准输出和/或标准错误流发送到遗忘中。
exit 1
)的值。您可以在网上快速找到关于返回/退出代码的其他约定,但重要的一点是,它不应为0,这表示成功。
老了,但由于先前的困惑,我现在有理由重新设计答案:
if [[ $1 == "" ]] #Where "$1" is the positional argument you want to validate
then
echo "something"
exit 0
fi
如果没有位置参数$ 1,它将回显“ Something”。但是,它不会验证$ 1包含特定信息。
$#
明确地是参数数量的整数;它可以是“ 0”,即使没有参数,您也将回显“ something”,或者它将是一些正数,并且您将正确回显“ something”。但是,支票本身永远不会做任何事情,无论您使用的是输入还是缺少输入,它都将始终报告$#
包含值的报告。因此,这是完全错误的,并且永远不会像声称的那样起作用。
echo $#
为脚本/tmp/test.sh的内容,然后在/斌/运行bash作为您有可用以及/ bin / sh的(或/斌/破折号和任何其他shell的实现。/tmp/test.sh
将回声“0” /bin/dash /tmp/test.sh
另一方面,控制台/tmp/test.sh foo
将回显“ 1”,/tmp/test.sh first second
并将回显“ 2”
man bash
,在“特殊参数”部分中,“外壳程序专门处理几个参数。只能引用这些参数;不允许对其进行赋值。”和“#扩展为十进制的位置参数数”。同样由POSIX强制要求,如pubs.opengroup.org/onlinepubs/9699919799/utilities/…中所述