带有使用消息的命令行参数

带有使用消息的命令行参数

我在脚本文件中使用命令行参数来检查是否在命令行中输入了文件时遇到了很多麻烦。所以基本上我有一个名为 ./file 的脚本文件和一个名为 log 的日志文件。我有一个 if then else 语句来运行检查以查看是否输入了正确的文件,如果没有,程序将退出并出现回显错误。如果输入正确的文件名,则会继续运行脚本。无论我做什么,我都会收到错误目录或文件不存在或回显错误。有人可以指出我做错了什么吗?感谢您提供的任何帮助。我正在使用腻子。这就是我所拥有的

  if ["./file log"]
      then
            echo ""
  else
            echo "error"
            exit 0
  fi

答案1

您不需要(自)引用脚本本身。你知道它一定存在。您只需要查看该log文件是否存在。因此,使用-f测试(“文件存在并且是常规文件”)。请参阅man test参考资料 获取更多信息(test本质上相当于[...])。

if [ -f "log" ]
  then
    echo ""
  else
    echo "error"
    exit 0
fi

如果log文件是由调用脚本时的参数提供的(例如$ ./file log),那么您可以使用 引用第一个参数$1。因此,

if [ -f "$1" ]

答案2

你一定也想要这个。 $0 是脚本的名称,$# 是参数的数量。附加说明,默认情况下,脚本成功时返回 0,错误时返回 <> 0

#!/bin/bash 
    display_usage() { 
        echo "This script must be run with ...." 
        echo -e "\nUsage:\n$0 [arguments] \n" 
    } 

if [ $# -eq 0 ]; then
    display_usage
    exit 1
fi
.... script ....
exit 0

相关内容