运行一个 bash 函数,该函数将两个文件名作为命令行中的变量

运行一个 bash 函数,该函数将两个文件名作为命令行中的变量

file1.inp我正在 Ubuntu 命令行中使用两个文件 (和)运行 Abaqus 作业,file2.f如下所示:

abaqus job=file1 user=file2.f

由于我经常使用不同的文件执行此操作,因此我想让它变得更容易:

myfunc file1 file2.f

其中myfunc是一个bash函数,它获取文件名并运行abaquscommand abaqus job=file1 user=file2.f

我感谢任何帮助解决这个问题的帮助。

答案1

myfunc () {
   abaqus job="$1" user="$2"
}

此调用使用abacus由给定函数的两个参数构造的参数进行调用。

通过一些错误检查(确保传递了正确数量的参数):

myfunc () {
   if [ "$#" -ne 2 ]; then
       printf '%s: Expecting 2 arguments, got %s\n' "${FUNCNAME[0]}" "$#" >&2
       return 1
   fi

   abaqus job="$1" user="$2"
}

您甚至可以给您的函数命名abaqus,但是您必须确保调用实际的 abacus命令与

command abaqus job="$1" user="$2"

在函数内部,这样你就不会得到无限递归。

相关内容