셸 스크립트
이름 확인 후 표시
#!/bin/bash
echo "What is your first name?"
read first
echo "What is your family name?"
read family
echo "Hello, my name is $first $family"
변량
파일에서 정의되지 않은 셸 변수를 실행할 때 전달
파일
echo $VAR
을 솔직하게 실행하면1.sh
변수VAR
가 정의되지 않아 출력이 없습니다.단말기 등에서 정의VAR
를 전달하는 방법1.sh
.VAR=hoge
. ./1.sh
를 통해 전달할 수 있습니다.이런 .
는source나dot operator라고 불린다.참조: https://unix.stackexchange.com/questions/114300/whats-the-meaning-of-a-dot-before-a-command-in-shell
readonly command 다시 쓰지 마세요.
NAME="hoge"
readonly NAME
NAME="fuga"
// zsh: read-only variable: NAME
이 과정에서readonly 변수를 표시하는 것은 아래 명령입니다readonly -p
When -p is specified, readonly writes to the standard output the names and values of all read-only variables, in the following...참조: https://man7.org/linux/man-pages/man1/readonly.1p.html
###변수 삭제
➜ shell name="hoge"
➜ shell echo $name
hoge
➜ shell unset name
➜ shell echo $name
➜ shell
명령행 매개변수
#!/bin/bash
echo "filename: $0"
echo "first parameter :$1"
echo "second parameter :$2"
echo "quoted values: $@"
echo "quoted values: $*"
echo "total number of parameters :$#"
$0
는 명령 자체를 가리킨다.$1
이후는 매개 변수를 가리킨다.$#
는 매개 변수의 수량이다.$*
$1, $2 직접 표시$@
모든 매개변수를 문자열로 정렬합니다.> ./3.sh hello world
file name: ./3.sh
first parameter :hello
second parameter :world
quoted values: hello world
quoted values: hello world
total number of parameters :2
여기참고 자료
Command substitution
#!/bin/bash
DATE=`date`
echo "date is $DATE"
// date is 2020年 12月22日 火曜日 22時03分16秒 CET
#!/bin/bash
for f in $(ls)
do
echo "$f"
done
~
참조expr
이 명령은 표현식을 평가하고 평가한 값을 되돌려줍니다.
expr 1 + 2
// 3
이걸 가정해 보세요.expr 1+2
쓰면 되돌아온다1+2
.operator와 operands 사이에는 공간이 필요합니다.사칙 연산
expr 1 + 2 # 3
expr 3 - 2 # 1
expr 3 \* 2 # 6
expr 3 / 2 # 1
static array
예1
arr=(hoge fuga)
echo ${arr[@]} #hoge fuga
echo ${arr[*]} #hoge fuga
echo ${arr[@]:0} #hoge fuga
echo ${arr[*]:0} #hoge fuga
예2for i in "${arr[@]}"; do echo "$i"; done
출력hoge
fuga
예3arr=(1 10 20 30)
i=0
while [ $i -lt ${#arr[@]} ]
do
echo ${arr[$i]}
i=`expr $i + 1` # i=$((i+1)) でもいい。
done
출력1
10
20
30
여기i=$((i+1))
하지만 가능하다고 쓰여 있습니다. 이것은arithmetic expansion이라고 합니다.
참고 자료
최종 과제
입력한 값과 값을 모두 받아들이고 합계 값을 제공하는 스크립트
#!/bin/bash
echo -n "Enter numbers:"
read n
i=0
sum=0
while [ $i -lt $n ]
do
read a[$i]
sum=$((sum+a[$i]))
i=$((i+1))
done
echo "the sum is $sum"
echo ${a[@]}
Reference
이 문제에 관하여(셸 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/peg/articles/56a3fd94e28092텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)