저는 작은 쉘 스크립트를 작성하고 있는데 이제 얻은 입력을 기반으로 디렉토리를 생성해야 하는 상황에 봉착했습니다. 여기 장면이 있습니다
나는 2 개의 디렉토리를 가지고 있습니다
DIR_PRE=/path/to/dir/dir_PRE
DIR_POST=/path/to/dir/dir_POST
이제 함수에 전송된 입력을 기반으로 두 디렉터리 중 하나를 만드는 함수를 사용하고 싶습니다.
- 내가 보내면
create_dir PRE
첫 번째 디렉토리를 생성해야하고 - 내가 보내면
create_dir POST
두 번째 디렉터리가 생성되어야 합니다.
create_dir
아래에 정의된 함수입니다.
create_dir ()
{
STAGE=$1
mkdir -p $DIR_${STAGE} # <-- how to get this right?
}
답변1
대문자 변수 이름을 사용하지 않도록 노력해야 합니다. 이는 내보내려는 변수가 아니므로 혼동해서는 안 됩니다. 다음은 원하는 것을 얻기 위해 실행할 수 있는 간단한 코드 조각입니다.
#!/usr/bin/env bash
dir_pre="$HOME"/dir_PRE
dir_post="$HOME"/dir_POST
die(){ echo >&2 "$@"; exit 1; }
create_dir()
{
local dir="$1"
case $dir in
PRE) mkdir -p "$dir_pre";;
POST) mkdir -p "$dir_post";;
*) die "option not known";;
esac
}
create_dir "$@"
답변2
비교적 간단한 방법은 if
생성자를 사용하는 것입니다.
create_dir()
{
if [[ $1 == "PRE" ]]
then
mkdir -p "$DIR_PRE"
elif [[ $1 == "POST" ]]
then
mkdir -p "$DIR_POST"
else
echo "Illegal argument $1!"
fi
}