我想在 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 都对它们进行相同的处理。)
看: