変数の一部をランダム入力に置き換えるには?

変数の一部をランダム入力に置き換えるには?

私は小さなシェルスクリプトを書いていますが、これで得られた入力に基づいてディレクトリを作成する必要がある状況に固執しました。ここにシーンがあります

私は2つのディレクトリを持っています

DIR_PRE=/path/to/dir/dir_PRE

DIR_POST=/path/to/dir/dir_POST

次に、関数に送信された入力に基づいて2つのディレクトリのうちの1つを作成する関数を使用したいと思います。

  • 私が送信したら、create_dir PRE最初のディレクトリを作成する必要があります
  • 私が送信したら、create_dir POST2番目のディレクトリを作成する必要があります。

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 "$@"

おすすめ記事