How to process basic commandline arguments in Bash?
所以我今天开始研究使用vim的脚本,我非常迷茫,在一些领域寻求帮助。
对于我的第一个项目,我希望将一个文件作为命令行参数进行处理,如果在用户执行此脚本时没有包含文件,那么应该显示一条用法消息,然后退出程序。
我不知道从哪里开始,我需要和
把
现在,对于以参数形式检查文件并显示用法消息,这是一个典型的模式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | PROGNAME="$0" function show_usage() { echo"Usage: ${PROGNAME} <filename>">&2 echo"...">&2 exit 1 } if [[ $# -lt 1 ]]; then show_usage fi echo"Contents of ${1}:" cat"$1" |
让我们把这个分解。
1 | PROGNAME="$0" |
1 2 3 4 5 6 7 | function show_usage() { echo"Usage: ${PROGNAME} <filename>">&2 echo"...">&2 exit 1 } |
这是一个打印"usage"消息并使用故障状态代码退出的函数。
1 2 3 | if [[ $# -lt 1 ]]; then show_usage fi |
1 2 | echo"Contents of ${1}:" cat"$1" |
我认为您在问如何编写一个bash脚本,该脚本需要一个文件作为命令行参数,如果出现问题,将退出并显示用法消息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash # check if user provided exactly one command-line argument: if [ $# -ne 1 ]; then echo"Usage: `basename"$0"` file" exit 1 # now check if the provided argument corresponds to a real file elif [ ! -f"$1" ]; then echo"Error: couldn't find $1." exit 1 fi # do things with the file... stat"$1" head"$1" tail"$1" grep 'xyz'"$1" |