Bash,无争议警告和案例决策

问题描述 投票:90回答:4

我正在学习bash。

我想做一个简单的脚本,当没有给出参数时,会显示一些消息。当我把numers作为参数时,s取决于值,它会做一件事或另一件事。

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

谢谢

bash
4个回答
146
投票
if [[ $# -eq 0 ]] ; then
    echo 'some message'
    exit 0
fi

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

Advanced Bash-Scripting Guide非常好。尽管它的名字,它确实对待基础知识。


18
投票

如果只想丢失一个特定的参数而对bailing感兴趣,那么Parameter Substitution很棒:

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

10
投票

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

结果

No args

细节

-z是字符串长度为零的一元运算符。 $*是所有论据。引号用于安全性并封装多个参数(如果存在)。

对于像这样的更多运营商,使用man bash和搜索(/ key)为“一元”。


2
投票

旧的,但由于之前的一些困惑,我有理由重新修改答案:

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

 then
 echo "something"
 exit 0

fi

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

© www.soinside.com 2019 - 2024. All rights reserved.