셸 스크립트 내에서 디렉터리 계층 구조를 이동하여 호출자에 반영하는 방법

2663 단어 우분투

셸 스크립트 내에서 디렉터리 계층 구조를 이동하여 호출자에 반영하는 방법



간단한 쉘 스크립트 작성했기 때문에 후세에 남겨 둔다.
특히 쉘에 자세한 것은 아니기 때문에 뭔가 문제가 있으면 부담없이 편집 요청이나 코멘트 해주세요!

하고 싶은 일


  • 매일 서버에서 날짜별 폴더를 파고 거기에서 작업하는 사람을위한 스크립트 mkdir 190512 && cd 190512
  • 현재 쉘의 문맥으로 다른 쉘을 호출한다 source ~/start.sh

  • 데이터



    ~/ops/startTodaysOps.sh
    #!/bin/bash
    
    dir1='ops/'
    dir2=`date "+%y%m%d"`
    
    dir=$dir1$dir2
    
    if [[ ! -e $dir ]]; then
        mkdir $dir
        chmod g+w $dir
    fi
    
    echo $dir
    cd $dir
    

    ~/.bashrc
    alias start='source ~/ops/startTodaysOps.sh'
    

    실행하다
    hirao $ start
    ops/200512
    
    hirao $ ~/ops/200512$ 
    

    조금 해설


    # 存在確認
    if [[ ! -e $dir ]]; then
    
    fi
    
    # -p オプションで存在確認してもよし
        mkdir $dir
    
    # とりあえずグループに書き込み権限あたえる
        chmod g+w $dir
    
    cd $dir
    
    # このCDは source で呼び出さないと別シェルでディレクトリ移動するっぽい
    

    실행 쉘의 프로세스 ID를 내보내기

    test.sh
    #!/bin/bash
    
    echo $$
    
    ~/workspace/shell-sample hirao$ echo $$
    42143
    
    ~/workspace/shell-sample hirao$ ./test1.sh       
    42366
    
    ~/workspace/shell-sample hirao$ source ./test1.sh
    42143
    
    

    이런 느낌. source로 실행하면 원래의 쉘내에서의 이동이 되므로 실행 후에 이동되고 있습니다.

    끝에



    꽤 쓰여졌지만 스크립트를 작성하는 데 시간이 걸렸습니다 (cd하지 않고 빠졌습니다).

    좋은 웹페이지 즐겨찾기