![変数から読むと空の新しい変数が提供されるのはなぜですか? [閉鎖]](https://linux33.com/image/143488/%E5%A4%89%E6%95%B0%E3%81%8B%E3%82%89%E8%AA%AD%E3%82%80%E3%81%A8%E7%A9%BA%E3%81%AE%E6%96%B0%E3%81%97%E3%81%84%E5%A4%89%E6%95%B0%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
保存した変数文字列からフォルダ名を取得しようとしています。次のコマンドを実行するとき
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
変数名として使用しないでください。)