时间戳转换器

如何获取 unix 脚本参数? [复制]

日期:2023-02-24     浏览:200    
【中文标题】如何获取 unix 脚本参数? [复制]【英文标题】:how to get unix script arguments? [duplicate] 【发布时间】:2014-10-26 19:54:40 【问题描述】:

我是 unix 脚本的新手。我正在尝试创建一个充当 unix 命令的脚本,例如“ls -l”、“ls -la”

myscript -x ----> 做一件事 myscript -xy ----> 做事情 1,做事情 2 myscript -yz ----> 做事情 2,做事情 3

所以,“-x”、“-xy”是 $0 吗?或者我们需要使用不同的变量来获得它?

谢谢

【问题讨论】:

相关:How do I parse command line arguments in bash? 请参阅(除了许多,许多其他时间已在 *** 上询问和回答)BashFAQ #35:mywiki.wooledge.org/BashFAQ/035 【参考方案1】:

在 Bash 中,参数从索引 1 开始,而 $0 保留给命令本身。这也适用于函数和命令。

这就是您实现与您所要求的类似的方式:

while [ "$1" != "" ] ; do
  case "$1" in
    -x)
       do_thing_1
       ;;
    -y)
       do_thing_2
       ;;
    -z)
       do_thing_3
       ;;
    *)
       error $1
       exit -1
       ;;
  esac
  shift
done

你需要声明函数do_thing_xxx和error。

我说“类似的东西”是因为这个脚本会理解“myscript -x -y -z”,但会检测到“myscripts -xyz”是错误的。

要实现像您这样更复杂的行为,您需要使用 GETOPT,如下所述:http://wiki.bash-hackers.org/howto/getopts_tutorial

希望对您有所帮助。

【讨论】:

正如man bash(1) 所说,在 linux 中“getopt 命令是 util-linux 软件包的一部分,可从 link 获得。也许您需要安装一个端口。 但我在终端中看到 getopts 命令。我使用您的代码,但似乎没有检测到“-x”、“-y”选项。它总是出现在最后一种情况下“*”。另一件事是我使用 [ -z "$1" ] 来查看 $1 是否为空 似乎在我的 Mac 上运行良好,无论是 bash 还是 sh。我检查使用“回声”作为案例。

相关文章

自Javascript中的unix时代以来,如何以毫秒为单位获取时间? [复制]

{】自Javascript中的unix时代以来,如何以毫秒为单位获取时间?[复制]【英文标题】:HowtogettimeinmillisecondssincetheunixepochinJavascript?[duplicate]【发布时间】:2012-03-2311:08:57【问题描述】:可能重复:HowdoyougetatimestampinJavaScript?Calculatingmill...}

PHP 如何在 unix 中获取服务器的时间戳? [复制]

{】PHP如何在unix中获取服务器的时间戳?[复制]【英文标题】:PHPHowtogetthetimestampofaserverinunix?[duplicate]【发布时间】:2016-03-2304:19:41【问题描述】:你好:)我基本上是在尝试从MySQL表中提取数据,并且我需要PHP来获取服务器上的当前...}

获取传递给 shell 脚本的最后一个参数

{...-2315:52:12【问题描述】:$1是第一个参数。$@是所有参数。如何找到传递给shell的最后一个参数脚本?【问题讨论】:我使用的是bash,但解决方案越便携越好。faqs.org/faqs/unix-faq/faq/part2/section-12.html使用也可}

如何以毫秒为单位获取带有 unix 时间戳的人类可读日期? [复制]

{】如何以毫秒为单位获取带有unix时间戳的人类可读日期?[复制]【英文标题】:Howtogethumanreadabledatewithunixtimestampinmilliseconds?[duplicate]【发布时间】:2014-10-1115:25:06【问题描述】:是否有不使用已弃用的Date类的解决方案,并且不必...}

如何将文件路径作为 bash 脚本中的参数传递给函数? [复制]

{】如何将文件路径作为bash脚本中的参数传递给函数?[复制]【英文标题】:Howtopassfilepathtoafunctionasanargumentinbashscript?[duplicate]【发布时间】:2019-08-3016:34:44【问题描述】:我想从不同的目录中获取文件并将其作为参数传递给函数...}

如何获取正在运行的 Python 脚本的路径? [复制]

{】如何获取正在运行的Python脚本的路径?[复制]【英文标题】:HowdoIgetthepathofthePythonscriptIamrunningin?[duplicate]【发布时间】:2010-10-1008:47:43【问题描述】:重复:InPython,howdoIgetthepathandnameofthefilethatiscurrentlyexecuting?如何获取我正在运...}

如何在 bash 中获取通过 $PATH 执行的脚本的绝对路径? [复制]

{】如何在bash中获取通过$PATH执行的脚本的绝对路径?[复制]【英文标题】:HowcanIgetabsolutepathtoascriptexecutedvia$PATHinbash?[duplicate]如何在bash中获取通过$PATH执行的脚本的绝对路径?[复制]【发布时间】:2017-05-0417:46:42【问题描述】:我...}

如何获取 Mysql 的数据库脚本? [复制]

{】如何获取Mysql的数据库脚本?[复制]【英文标题】:HowtogetDatabasescriptforMysql?[duplicate]【发布时间】:2013-03-2600:20:29【问题描述】:我有Mysql数据库。我只想使用我的数据库的骨架,即我只想要创建数据库和表的脚本。不是数据库...}

如何在Unix中为shell脚本锁定目录[重复]

{】如何在Unix中为shell脚本锁定目录[重复]【英文标题】:Howtolockadirectoryinunixfortheshellscript[duplicate]【发布时间】:2019-08-2800:07:39【问题描述】:我需要根据以下条件删除目录D的内容获取目录D的已用空间。如果已用空间超过阈值,...}

如何从shell脚本中的另一个目录获取文件的完整路径? [复制]

{】如何从shell脚本中的另一个目录获取文件的完整路径?[复制]【英文标题】:Howtogetfullpathofafilefromanotherdirectoryinshellscript?[duplicate]【发布时间】:2016-07-0617:41:32【问题描述】:我有一个shell脚本/home/abc/xyz/test.sh我有一个文件/home/d...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号