shファイル内で外部.jsonファイルの値を読み込み、 任意の値を書き換えたいとき人生に一度はあると思います。 以下のファイルは同一フォルダ内にあります。
//.test.json { "apple":"りんご", "Lemon":"れもん", "grep":"jqコマンド", "sed":"取り除く", "cat":"ねこ", }
// frult.sh if [ -e ".test.json" ] then name=$(cat .clasp.json | jq '.apple' | sed 's/^.*"\(.*\)".*$/\1/') mv ".test.json" ".frult.json."$name fi //同じフォルダ内に.test.jsonというファイルがあるなら //keyがappleのvalueを取得してnameという変数に入れている //更に.test.jsonを.frult.json.りんごにしているcat:指定したファイルを取得 jq:指定したkeyのvalueを取得 sed:指定した文字を削除(ダブルコーテーションを消しています)
jqコマンドがすごいです追記 ダブルコーテーションの処理はわざわざsedを使わなくてもできました 以下のようにできます。name=$(cat .clasp.json | jq '.apple' | sed 's/^.*"\(.*\)".*$/\1/') //これから name=$(cat .clasp.json | jq -r '.apple' ) //これに