如何使用参数制作 Bash 函数? [复制]

Posted

技术标签:

【中文标题】如何使用参数制作 Bash 函数? [复制]【英文标题】:How to make a Bash Function with parameters? [duplicate] 【发布时间】:2020-06-08 07:13:49 【问题描述】:

我正在尝试在 .bash_profile 中编写一个 bash 函数,其参数将在我的 sql 上运行脚本并对其进行测试,但在尝试调用它时出现以下错误:

$ sqltest() ~/Downloads/hw5-2.sql
-bash: syntax error near unexpected token `~/Downloads/hw5-2.sql` 

参数为文件路径。我现在拥有的(也尝试过"$1" 不带引号):

sqltest()  java -cp h2-1.4.200.jar org.h2.tools.RunScript  -checkResults -url jdbc:h2:mem:test -script "$1" -continueOnError ; 

【问题讨论】:

如果这个猜测是错误的,我建议运行 set -x 来启用跟踪记录,重现错误,并向我们展示你是如何做到的,其中包括两者您运行的命令和产生的确切文本(直至并包括错误消息本身;不需要包括与打印提示或其他此类本地挂钩的任何跟踪日志)。 (顺便说一句,"$1" 内引号是正确的)。 我以sqltest() ~/Downloads/hw5-2.sql运行 运行sqltest ~/Downloads/hw5-2.sql() 不是函数名的一部分。 @Jetchisel,扩展是在函数启动之前完成的,所以~工作正常。如果他们正在运行sqltest "~/Downloads/hw5-2.sql",那将是一个问题,但他们不是。 【参考方案1】:

在函数调用中去掉括号;它们只是函数定义语法的一部分:

sqltest ~/Downloads/hw5-2.sql

【讨论】:

以上是关于如何使用参数制作 Bash 函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将传递给我的 bash 脚本的所有参数传递给我的函数? [复制]

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

如何制作一个将函数作为参数的类方法? [复制]

如何在 Bash 参数中保留引号? [复制]

如何使用 bash 命令参数创建文件名? [复制]

如何在 bash 中结合 getopts 和位置参数? [复制]