変数から読むと空の新しい変数が提供されるのはなぜですか? [閉鎖]

変数から読むと空の新しい変数が提供されるのはなぜですか? [閉鎖]

保存した変数文字列からフォルダ名を取得しようとしています。次のコマンドを実行するとき

path="Folder%20Name/Dir/File"
read -d "/" folder < <(echo ${path/\%20/ })
echo "$folder"

私は空白を得ますecho $folder。私はどこで間違っていますか?試しましたがread -d "/" folder <<< $"(${path/\%20/ })"成功しませんでした。

ベストアンサー1

最初のコマンドは Bash 4.4 でうまく動作します。

$ path="Folder%20Name/Dir/File"
$ read -d "/" folder < <(echo ${path/\%20/ })
$ echo "$folder"
Folder Name

ここでは、プロセス置換を使用する必要はありませんが、次の文字列を使用できます。

$ read -d "/" folder <<< "${path/\%20/ }"

2番目のコマンドでは、$"..."ここでは不要なローカライズされた引用符を使用しており、角かっこも文字列に追加されているため、変数(Folder Nameに対してこれを行うことで取得できますpath

(しかし、Zshを使い始めたら、Zshをpath変数名として使用しないでください。)

おすすめ記事