連想配列

連想配列

ユーザー入力後、配列で選択した変数の拡張値に対して操作を実行したいと思います。これが私が意味するものです:

$ ./myscript.sh url2


#!/bin/bash

array=(Sigil wp2epub csskit)

Sigil       =   "https://github.com/Sigil-Ebook/Sigil.git"
csskit      =   "https://github.com/mattharrison/epub-css-starter-kit.git"
wp2epub     =   "https://github.com/mrallen1/wp2md.git"

if [ -z $1 ]; then
  echo "This script needs at least one parameter!"
  exit 1
fi

if [ $1 = Sigil ]; then
  ans=$Sigil # expanded
elif [ $1 = csskit ]; then
  ans=$csskit # expanded
elif [ $1 = wp2epub ]; then
  ans=$wp2epub # expanded
else
  echo "Please inform one of \
        Sigil, csskit or wp2epub!"
fi

git clone $ans

説明する:

スクリプトはユーザー入力($ 1)を確認し、それを可能な変数の配列と比較し、見つかった場合はその変数の拡張値を回答として取得し、拡張値(変数名ではなく)を使用します。

数日間努力しましたが、限られたbashスクリプト技術だけでは十分ではありません。

よろしくお願いします。


@terdon要求に応じて:ユーザーに人間に優しい配列の変数名を教えてください。

これらの変数は、実際にはgithub(git clone)から取得し、再コンパイルして再インストールする必要があるパッケージの名前です。

実際の使用量は次のとおりです。

$ ./update.sh Sigil # Sigil is one of the variables

ベストアンサー1

連想配列を使用します。

#!/bin/bash

declare -A url
url=( [url1]="http://www.google.com"
      [url2]="http://www.yahoo.com"
      [url3]="http://www.bing.com"
    )

if [[ -z $1 ]] ; then
    echo "This script needs at least one parameter!"
    exit 1
elif [[ -z ${url[$1]} ]] ; then
    echo 'Unknown option'
    exit 1
fi

echo "Let's search ${url[$1]}."

おすすめ記事