bash parameter expansion
http://wiki.bash-hackers.org/syntax/pe
■ Simple usage
echo "Argument 1 is: $1"
echo "Argument 10 is: ${10}"
${array[5]}
${array[*]} # count
${array[@]} # count
■ 間接
param="abcdefg"
look_var="param"
echo "${!look_var}" # abcdefg
echo ${!#} # 最後の引数
#BASHで始まる変数を列挙する
echo ${!BASH*} # BASH BASH_ARGC BASH_ARGV BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
### replace/削除
MYSTRING="Be liberal in what you accept, and conservative in what you send"
echo "${MYSTRING#* }" # liberal in what you accept, and conservative in what you send
echo "${MYSTRING##* }" # send
echo "${MYSTRING% *}" # Be liberal in what you accept, and conservative in what you
echo "${MYSTRING%% *}" # Be
FILENAME="/home/adams/memo.txt"
echo "${FILENAME%.*}" # /home/adams/memo
echo "${FILENAME##*.}" # txt
echo "${FILENAME%/*}" # /home/adams
echo "${FILENAME##*/}" # memo.txt
FILE_EXT="${FILENAME##*/}" # memo.txt
FILEBASE="${FILE_EXT%.*}" # memo
${変数#パターン} 前方一致、最短削除
${変数##パターン} 前方一致、最長削除
${変数%パターン} 後方一致、最短削除
${変数%%パターン} 後方一致、最長削除
${変数/パターン/置換文字列} 最長一致を初回だけ置換
${変数//パターン/置換文字列} 一致をすべて置換
array=(This is a text)
echo "${array[@]%is}" # Th a text
echo "${MYSTRING//conservative/happy}" # Be liberal in what you accept, and happy in what you send
echo "${MYSTRING/in/by}" # Be liberal by what you accept, and conservative in what you send
echo "${MYSTRING//in/by}" # Be liberal by what you accept, and conservative by what you send
echo "${MYSTRING//conservative/}" # Be liberal in what you accept, and in what you send
echo "${MYSTRING//conservative}" # Be liberal in what you accept, and in what you send
XXX=xxxxxxxxxx
echo "${XXX/#x/y}" # yxxxxxxxxx
echo "${XXX/%x/y}" # xxxxxxxxxy
### length
echo "${#MYSTRING}" # 64
echo ${#array[1]} # 2
echo ${#array[@]} # 4
### substring
echo ${MYSTRING:34} # conservative in what you send
echo ${MYSTRING:34:13} # conservative
echo ${MYSTRING: -10:5} # t you
echo ${MYSTRING:(-10):5} # t you
echo ${array[0]:2:2} # is
echo ${array[@]:1:2} # is a
### default value
echo "Your home directory is: ${HOME:-/home/$USER}."
array=()
echo ${array2[@]-This array is NULL or unset}
array=("" word)
read -p "Enter your gender (just press ENTER to not tell us): " GENDER
echo "Your gender is ${GENDER:=a secret}."
echo "Ah, in case you forgot, your gender is really: $GENDER"
### Use an alternate valueまで、あとは次回