Bash での訓練 -- 入出力と API 리크에스트

14730 단어 bash



運用 등으로 쉘 스크립트 を書くことが多いが
全然文法わからなくて困ったのでまとめる.

入出力の基礎



変数に入れて出す



https://qiita.com/Ping/items/57fd75465dfada76e633#%E5%A4%89%E6%95%B0%E6%96%87%E5%AD%97%E5%88%97

#!/bin/bash

NAME='kaede'
echo NAME
echo $NAME


이름 変数に kaede の文字列をいれて
NAME 과 $NAME を出力すると

 ./test.sh 
NAME
kaede


$ ついていない方は変数として処理されない.
変数の中身を出力する時は $ が必要.

echo 'Hello ${NAME} !!!'
echo "Hello ${NAME} !!!"


Hello kaede !!!
Hello ${NAME} !!!



JS のように、変数literalで展開して出すこともできる.
싱르크 ォートだと展開されない.

引数を扱う



https://qiita.com/Ping/items/57fd75465dfada76e633#%E4%BD%8D%E7%BD%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF

位置parameterというらしい.

echo "arg1: ${1} arg2: ${2}" 



 ./test.sh inputOne inputTwo inputThree
arg1: inputOne arg2: inputTwo


引数は $1 ~ $10 で扱える

echo "  args: ${@}  "  



 ./test.sh hoge hoge hoge hoge hoge hoge hoge hoge hoge hhhho hoge
  args: hoge hoge hoge hoge hoge hoge hoge hoge hoge hhhho hoge 


$@ で全て扱える


引数がない場合のデフォルトを設定する



https://qiita.com/Ping/items/57fd75465dfada76e633#bash%E3%81%AE%E5%A4%89%E6%95%B0%E5%B1%95%E9%96%8B%E6%99%82%E3%81%AE%E7%BD%AE%E6%8F%9B

echo "arg1: ${1-"NOARG1"}" 



 ./test.sh    
arg1: NOARG1
 ./test.sh hoge  
arg1: hoge


하이푼을つけることで、その値がない場合に
代入される値を書くことができる.

つmari、引数がない場合の動作を書くのに使える.

標準入力を扱う



echo $(</dev/stdin)

$(
 cat ids.txt 
1000
1001
 ./test.sh < ids.txt
1000 1001


渡した ids.txt の中身にアクセスできた.


渡したファイルを一行一行処理する



https://stackoverflow.com/a/1521498

while read id
do
  echo "https://jsonplaceholder.typicode.com/users/$id"
done < "${1:-/dev/stdin}"



{valueName}을(를) 읽는 동안
で受け取ったものでループできる

 ./test.sh ids.txt 
https://jsonplaceholder.typicode.com/users/1000
https://jsonplaceholder.typicode.com/users/1001


これで渡した ids のTekistfァyrに応じて
rikesttに組み込む便利스크립트を作れる.


処理の基礎


If else fi で条件実行する



https://www.thegeekstuff.com/2010/06/bash-if-statement-examples/

https://qiita.com/toshihirock/items/461da0f60f975f6acb10

#!/bin/bash                                       

if [ $1 -eq 100 ];
then
  echo "one hundred"
elif [ $1 -gt 100 ] ; 
then 
  echo "Over one hundred"
elif [ $1 -lt 100 ] ; 
then 
  echo "Under one hundred"
else
  echo "Other value"
fi



 ./test.sh 100  
one hundred
 ./test.sh 101
Over one hundred
 ./test.sh 99 
Under one hundred
./test.sh -1.1 
./test.sh: line 3: [: -1.1: integer expression expected
./test.sh: line 6: [: -1.1: integer expression expected
./test.sh: line 9: [: -1.1: integer expression expected
Other value


이것저것,
if [条件] 그렇다면;で処理を書いて
elif [条件] 그때;で次の場合の処理 ​​x n
else で最後の処理

と分岐処理が書ける.

100 = 100 が 100 -eq 100
101 > 100 가 100 -gt 100
099 < 100 099 -lt 100

と書ける.珍しい書き方!

1은 100보다 작습니다.

応用編


awk で中身を削る



https://www.geeksforgeeks.org/awk-command-unixlinux-examples/

正規表現で中身を削れる.

awk '{print}' ids.txt
1000 sato eng
1001 kato biz
1001 ookubo biz


囲타 판화로 普通에 고양이로 きて

awk '/to/ {print}' ids.txt 
1000 sato eng
1001 kato biz


싱루크 ォートの内部の前半に 정규식 を持ってくると
正規表現で絞れる.

 awk '{print $2}' ids.txt
sato
kato
ookubo


$2 에서 시작됩니다.


jq で中身を削る



https://jsonapi.org/examples/

これを json.json として作って

jq . json.json


jq .でファイルを指定する와 綺麗に出力できる.
フォーmattにあっている json じゃないとエラーになる.

jq '.data[0].type' json.json


名前と配列名で絞り込める.


curl 과 HTTP 리크에스트를 할 수 있는



https://www.keycdn.com/support/popular-curl-examples

기본

https://qiita.com/ryuichi1208/items/e4e1b27ff7d54a66dcd9#%E5%9F%BA%E6%9C%AC%E5%BD%A2

옵션 정보

https://mkyong.com/spring/curl-post-request-examples/

-H "콘텐츠 유형: 애플리케이션/json"

これでヘッダー情報を body に詰めて送れる.
複数送る時は -H ごと複数追記する.

-d '{"키1":"발1","키1":"발"}'

これで json を body に詰めて送れる.

-V

これで結果が 200 ~ 500 かわかる.


할 것



make でシェルコマンドをまとめる

좋은 웹페이지 즐겨찾기