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
ご覧のとおり、ディレクトリの1つを作成しました。その後、別のディレクトリを使用して同じコードをもう一度繰り返す必要があります(次回はvarAppdata ディレクトリ生成されます)。
関数を宣言する方法を見つけようとしています。
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シェルまたはBashの関数には名前付きパラメータはありません。代わりに、パラメータは場所パラメータなどに表示されます$1
。$2
必要に応じて、名前付きローカル変数に手動でコピーする必要があります。だから:
foo() {
local this="$1"
local that="$2"
printf "foo: that is '%s'\n" "$that"
}
foo one two
(ローカル変数は標準で指定されていませんが、ksh(ksh93?)を除くほとんどすべてのシェルはこれを同じように扱います。)
望むより: