if [[ "$1" != "" ]]; then
dr="${1/%\//}"
fi
上記のコードで "${1/%\//}"
拡張とは何ですか?
答え1
/
これは、aまたはシェルからaで終わる値の終わりからaを削除するバイパス方法です。$1
/
bash
ksh
zsh
非標準パラメータ置換を使用して一致が終わったら、テキストを置き換えます${parameter/%pattern/replacement}
。ここで使用されるパターンは、文字通りのスラッシュ(そうでなければエスケープする必要があり、区切り文字として機能します)が何もないものに置き換えられるということです。テストでは、値がnullでない場合にのみ置換と割り当てが行われます。$parameter
pattern
\/
if
dr
$1
同じコンテンツを作成するより移植可能な方法は次のとおりです。
[ -n "$1" ] && dr=${1%/}
または、
if [ -n "$1" ]; then
dr=${1%/}
fi
標準置換は、値の末尾から一致するもの${parameter%pattern}
(最も短い部分文字列)を削除します。上記のコードでは、スラッシュの場合は文字列の最後の文字を削除するためにパターンと一緒に使用しています。pattern
$parameter
/
テストも複雑ではない-n
テストに変更されました。本物与えられた文字列が空でない場合。