Bashrc関数ケース文はJSONからケースを取得します。

Bashrc関数ケース文はJSONからケースを取得します。

システムについてより早く学ぶために.bashrc機能を作成しています。私は行きたい場所を説明するためにケースの説明を使用します。

function da() {
case "$1" in 
    home)   cd ~
            ;;
    eolas) cd /home/eolas/
           ;;
esac
}

JSONファイルからケースをインポートしたいと思います。たとえば、次のようになります。

{
  "cases": {
    "home": "~",
    "eolas": "/home/eolas/",
    "jdan": "/home/jdan/",
    "kl": "/.kl/"
  }
}

私はこれを行う方法を探していましたが、今まで見つかりませんでした。これはbashで可能ですか?それではどうでしょうか?

ベストアンサー1

JSONファイルがある場合は、自動的に使用を検討する必要があります。それを分析するために。

ファイルを連想配列として読み取る必要があります。

declare -A __dirmap
while IFS=$'\t' read -r name dir; do
    [[ $dir == "~" ]] && __dirmap[$name]=$HOME || __dirmap[$name]=$dir
done < <(
    jq -r '.cases | to_entries[] | [.key, .value] | @tsv' file.json
)

その後、関数は次のようになります。

function da() {
    if [[ -v __dirmap[$1] ]]; then
        cd "${__dirmap[$1]}"
    else
        echo "No mapping for $1" >&2
    fi
}

おすすめ記事