shell script - deptno/deptno.github.io GitHub Wiki

shell-script|์‰˜์Šคํฌ๋ฆฝํŠธ

set -e # error ๊ฐ€ ๋‚˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ์—๋Ÿฌ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค
some error command || true # ํ•ด๋‹น ์ปค๋งจ๋“œ๋Š” ์—๋Ÿฌ์ง€๋งŒ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค

example

function fx() {
  local first=$1
  local sencod=$2
  
  echo $1
}
array_data=(
  "a"
  "b"
  "c"
)

for item in "${array_data[@]}"
do
  echo fx $item
done

for item in {1..5}

# ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
TAG=$([ "$NS" = "production" ] && echo "latest" || echo "dev")

๋ฌธ์ž์—ด ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ๋ฌธ์ž์—ด์€ ํ™‹ ๋”ฐ์˜ดํ‘œ๊ฐ€ ์•„๋‹Œ ์Œ๋”ฐ์˜ดํ‘œ์—ฌ์•ผ ํ•œ๋‹ค

touch script.sh
chmod +x script.sh
cat <<EOF > script.sh
echo $1
echo "helll $1"
EOF
$ script.sh arg1
arg1
arg1

ํ• ๋‹น

#!/usr/bin/env bash

VAR=${1:-default_value}
VAR=${1:+laternative_value}
VAR=${1:?error messaage if not set}

์ด์™ธ์— :- ์™€ ๋น„์Šทํ•œ := ๊ฐ€ ์žˆ๋‹ค. ๋ณ€์ˆ˜๊ฐ’ ๋Œ€์‹  default ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋™์ผํ•˜์ง€๋งŒ ๋ณ€์ˆ˜ ํ• ๋‹น๋„ ๋™์‹œ์— ์ด๋ฃจ์–ด์ง„๋‹ค

VAR=

echo "${VAR:-default_value}"  # default_value
echo $VAR                     # 
echo "${VAR:=default_value}"  # default_value
echo $VAR                     # default_value

์ถ”์ถœ

parameter expansion

VAR%%@* VAR ๋ณ€์ˆ˜๊ฐ’ ๋’ค์—์„œ๋ถ€ํ„ฐ @๋ฅผ ์ฐพ์„๋•Œ๊นŒ์ง€ ๋ฌธ์ž ์ œ๊ฑฐ

email="[email protected]"
username=${email%%@*}

echo "username: $username"  # ์ถœ๋ ฅ: username: a

์กฐ๊ฑด๋ฌธ

if [ ! -z "$ENV_VAR"] # ํ˜น์€ [ -n "$ENV_VAR"]
then
  echo $ENV_VAR
elif
  echo "empty"
fi

ํ™˜๊ฒฝ๋ณ€์ˆ˜

  • IFS | internal field separator
    • ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  for x in $MULTILINE_VALUE ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๊ณต๋ฐฑ๋งˆ๋‹ค ๋ณ€์ˆ˜ x ์— ๋“ค์–ด๊ฐ€๊ฒŒ๋œ๋‹ค
    • ์ด๋•Œ ๋ผ์ธ์„ ๊ตฌ๋ถ„์ž๋กœ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด IFS=$'\n' ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•ด์ฃผ๋ฉด๋œ๋‹ค
IFS=$'\n'
for script in $(cat shell_script_lines.sh); do
  $script;
done;

์ธ์ž

์ธ์ž > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ๊ธฐ๋ณธ๊ฐ’

if [ -n "$1" ]; then
  NS=$1
fi
NS=${NS:="default-ns"}

shell

โš ๏ธ **GitHub.com Fallback** โš ๏ธ