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
보시다시피 디렉토리 중 하나를 만들었습니다. 그런 다음 다른 디렉토리를 사용하여 동일한 코드를 다시 반복해야 합니다(다음번에는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?)를 제외한 거의 모든 쉘은 이를 동일하게 취급합니다.)
바라보다: