ユーザー入力後、配列で選択した変数の拡張値に対して操作を実行したいと思います。これが私が意味するものです:
$ ./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]}."