ksh -> 서브 쉘 내에서 부모 쉘 (메인 쉘)에서 명령을 실행할 수 있습니까?

StackOverflow https://stackoverflow.com//questions/23023084

문제

#!/usr/bin/ksh


if [ $# -ne 1 ]; then
        echo "[*]\t Please see usage..."
        echo "[*]\t Usage: $0 <store_number>"
        exit 1
fi


if [ -z "$1" ]; then
        echo "[*]\t Please see usage..."
        echo "[*]\t Usage: $0 <store_number>"
  exit 1
fi


Store_Number=$1
EPS_Directory="/apps/epsadmin_90000"$Store_Number"/EPS"


cd $EPS_Directory
.

메인 쉘에서 내 디렉토리를 변경할 간단한 스크립트를 작성하려고합니다. Sub-쉘 (위 표시) 내에서 디렉토리를 변경하기 위해 작업을 수행하지만, 스크립트가 실행되면 분명히 스크립트가 실행되면 외부 셸로 다시 꺼내고 내 원래 디렉토리에 돌아 왔습니다.

은 하위 쉘 내에서 외부 쉘에 명령을 전달할 수 있습니까?CD 명령을 외부 셸에 전달할 수 있습니까?

실행중인 경우 :

./cd.sh 2001
.

내 디렉토리를 원한다 :

/apps/epsadmin_900002001/EPS
.

외부 쉘로 돌아가면

도움이 되었습니까?

해결책 2

모든 도움을 주셔서 감사합니다!이것은 내 솔루션입니다.

#   create dj file in /users/(YOUR_NUID) directory
#   paste the dj function into this file.   (vi dj)  (hit i to enter edit mode) (right click to paste)  (hit esc)  (type :wq)
#   source the dj file containing dj() functon by adding this to .profile:
#   . $HOME/dj
#   reload .profile by typing . ./.profile

#   then to run the function simply type dj <storenumber> to jump between EPS directory folders.


dj(){

Store_Number=$1
EPS_Directory="/apps/epsadmin_90000"$Store_Number"/EPS"

    if [ -e $(echo $EPS_Directory) ]; then
        cd $EPS_Directory
        echo "You are now in directory: $EPS_Directory"
    else
        echo "Directory $EPS_Directory does not exist."
    fi 

}
.

다른 팁

아니오, 이것은 불가능합니다.

대신 기능을 만들 수 있습니다.

mycd() {
  if [ $# -ne 1 ]; then
    echo "[*]\t Please see usage..."
    echo "[*]\t Usage: $0 <store_number>"
    return 1
  fi

  if [ -z "$1" ]; then
    echo "[*]\t Please see usage..."
    echo "[*]\t Usage: $0 <store_number>"
    return 1
  fi

  Store_Number=$1
  EPS_Directory="/apps/epsadmin_90000$Store_Number/EPS"

  cd "$EPS_Directory"
}
.

... 자신의 파일에 저장하고 소스를 저장하십시오.

. $HOME/.fun/mycd.sh
.

쉘 함수는 하위 프로세스에서 실행되는 스크립트와 달리 주 프로세스에서 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top