嵌入在 Bash 脚本中的指令?

嵌入在 Bash 脚本中的指令?

有没有办法让 bash 脚本在加载时需要一组参数,如果不需要,它会自动echo在屏幕上输出指令?

查看这个脚本示例copy

user@localhost : user # ./copy  
Copy by SamplePerson  
Usage:  
copy [path/to/file] [path/to/destination]  
user@localhost : user #

我希望它确保如果没有给出参数,它将自动在 上吐出一些预定义的文本echo

我知道如何确保用户输入正确的值,但我只想向他们显示初始的“使用”信息。

答案1

我经常使用这样的结构:

case "$1" in
    'start')
        startProfile
        ;;

    'stop')
        stopProfile
        ;;

    'restart')
        stopProfile
        startProfile
        ;;

    *)
        echo "Usage $0 start|stop|restart <profile|application>"
esac

您有一个处理正常情况的 switch-case,如果没有一个适合,那么默认情况会打印使用说明。

答案2

您可以尝试这样的操作:

#!/usr/bin/bash

[ $# -eq 0 ] && cat <<XXX && exit 0;
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
XXX

echo Check args "$@"

示例运行:

# ./test.sh
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]

# ./test.sh -x -y
Check args -x -y

您可以使用以下方式以非常方便的方式处理参数getopts 内置命令。或者外部getopt(3)命令(特别是当您使用长(例如--longopt)参数时)。

相关内容