在 bash 脚本中具有自己的参数的函数

在 bash 脚本中具有自己的参数的函数

我想在 Linux 上创建一个脚本来创建一些目录(如果它们不存在)。这些目录在脚本本身内部声明(不是从命令行传递):

#!/bin/bash

varBaseDir="/home/user"

# Directories to create
varAppDir="${varBaseDir}/app"
varAppDataDir="${varBaseDir}/appData"

if [[ -d ${varAppDir} ]]
        then
                echo "app dir exist"
        else
                echo "app dir does not exist! creating '${dir}' ..."
                mkdir -p ${dir}
                if test "$?" -eq "0"
                        then
                                        echo "succeeded."
                        else
                                echo "failed to create directory"
                fi
fi

正如您所看到的,我创建了其中一个目录。然后我需要再次重复相同的代码,但使用不同的目录(下次我想要varApp数据目录待创建)。

我试图弄清楚如何声明一个函数:

my_function($dir) {
        echo $dir
}

my_funciotn("HELLO")

但我收到错误:

./test.sh: line 27: syntax error near unexpected token `$dir'
./test.sh: line 27: `my_function($dir) {'

那么如何正确地做到这一点呢?

答案1

POSIX shell 或 Bash 中的函数没有命名参数。相反,参数显示在位置参数、$1$2等中。

如果需要,您必须手动将它们复制到命名局部变量。所以:

foo() {
    local this="$1"
    local that="$2"
    printf "foo: that is '%s'\n" "$that"
}
foo one two

(标准中没有指定局部变量,但除了 ksh(ksh93?)之外的几乎所有 shell 都对它们进行相同的处理。)

看:

相关内容