셸 스크립트

4895 단어 Linuxtech

이름 확인 후 표시


#!/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
여기
  • $* = hello world
  • $@ = array: {"hello", "world"}
  • 되다
    참고 자료
  • http://linuxsig.org/files/bash_scripting.html
  • https://superuser.com/questions/247127/what-is-and-in-linux
  • 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
    ~       
    
    참조
  • https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html
  • 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
    
    예2
    for i in "${arr[@]}"; do echo "$i"; done 
    
    출력
    hoge
    fuga
    
    예3
    arr=(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이라고 합니다.
    참고 자료
  • https://www.gnu.org/software/bash/manual/html_node/Arithmetic-Expansion.html
  • 참고 자료
  • https://linuxconfig.org/how-to-use-arrays-in-bash-script
  • 최종 과제


    입력한 값과 값을 모두 받아들이고 합계 값을 제공하는 스크립트
    #!/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[@]}
    

    좋은 웹페이지 즐겨찾기