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 でシェルコマンドをまとめる
Reference
이 문제에 관하여(Bash での訓練 -- 入出力と API 리크에스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kaede_io/bash-denoxun-lian-3783
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/bin/bash
NAME='kaede'
echo NAME
echo $NAME
❯ ./test.sh
NAME
kaede
echo 'Hello ${NAME} !!!'
echo "Hello ${NAME} !!!"
Hello kaede !!!
Hello ${NAME} !!!
echo "arg1: ${1} arg2: ${2}"
❯ ./test.sh inputOne inputTwo inputThree
arg1: inputOne arg2: inputTwo
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
echo "arg1: ${1-"NOARG1"}"
❯ ./test.sh
arg1: NOARG1
❯ ./test.sh hoge
arg1: hoge
echo $(</dev/stdin)
❯ cat ids.txt
1000
1001
❯ ./test.sh < ids.txt
1000 1001
while read id
do
echo "https://jsonplaceholder.typicode.com/users/$id"
done < "${1:-/dev/stdin}"
❯ ./test.sh ids.txt
https://jsonplaceholder.typicode.com/users/1000
https://jsonplaceholder.typicode.com/users/1001
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 でシェルコマンドをまとめる
Reference
이 문제에 관하여(Bash での訓練 -- 入出力と API 리크에스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kaede_io/bash-denoxun-lian-3783
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
jq . json.json
jq '.data[0].type' json.json
make でシェルコマンドをまとめる
Reference
이 문제에 관하여(Bash での訓練 -- 入出力と API 리크에스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/bash-denoxun-lian-3783텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)