2017-05-17 22 views
-1

나는 디렉토리를 이동할 수있는 bash 스크립트를 만들려고 노력해왔다. 이 스크립트를 만들었지 만 도망치면 아무 것도 실행하지 않습니다. print 문을 추가하려고 시도했는데 제대로 작동하지 않습니다. 이걸 실행해야하는 특정 방법이 있습니까? 스크립트 : 이해하면디렉토리 스크립트를 올리시겠습니까?

#!/usr/bin/zsh 
DIR=$1 
NUM=$PWD 
for ((c=1; c <= DIR; c++)) 
do 
    echo $NUM 
    cd $NUM/.. 
done 
+3

스크립트는 하위 프로세스에서 실행됩니다. 환경에 대한 변경 사항은 호출 쉘에 영향을주지 않습니다. – Barmar

+1

실행 가능 스크립트가 아닌 [function] (http://zsh.sourceforge.net/Doc/Release/Functions.html)로 만들 수 있습니까? –

답변

1

, 당신은 디렉토리 트리의 디렉토리 위로 이동 것을 좋아합니다.


이것은 스크립트는 .bashrc와 같이 별칭합니다 alias up1='cd../' alias up2='cd../../'을 당신이 그것을 여러 번 스크립트 만 상자 기존되지 져야 할 엔트리를 실행하는 경우 등등, 나는 깊이 (9)를 제한합니다. 깊이를 줄이고 스크립트가이 별칭을 관리하면 항목을 삭제하도록 만들 수 있습니까?

자신이 찾고있는 스크립트가 아니기 때문에 자신의 인스턴스에서 스크립트를 실행 한 후에는 현재 쉘에 영향을 줄 수 없습니다. 또한이 스크립트가 별칭을 만든 후에는 다시 인증하거나 새 셸을 열어야합니다. 그 시점부터 .bashrc에서 별칭 항목을 삭제하지 않을 때까지 작동합니다.

#!/bin/sh 

[[ ! $# == 1 ]] && echo "Only one parameter accepted" && exit 1 
[[ $(echo $1 | grep -c ^[1-9]$) -eq 0 ]] && echo "parameter must be between 1 and 9" && exit 1 

cdcommand="" 
for ((i = 1 ; i <= $1 ; i++)); do 
     cdcommand=$(echo $cdcommand | sed 's/^/\.\.\//g') 
       [[ $(cat ~/.bashrc | grep -c "alias up$i='cd $cdcommand' ") == 0 ]] && 
       echo "alias up$i='cd $cdcommand' " >> ~/.bashrc 
done 
+0

기다려, 아니, 내가 "최대 2"를 입력하고 내가 "2"할 경우 그것은/blah/blah/yo/blah에서 나를 옮길거야 그렇게 디렉토리에 올라갈거야 스크립트를 만들고있어/ – TheGuyWhoCodes

+1

@TheGuyWhoCodes : 사람들이 귀하의 요구 사항을 볼 수 있도록 Q를 편집하십시오. 마찬가지로 누군가가이 답변을 쓰는 ​​데 시간을 낭비했고 X 사람들은 시간과 낭독 시간을 낭비했습니다. http://stackoverflow.com/help/how-to-ask, http://stackoverflow.com/help/dont-ask, http://stackoverflow.com/help/mcve를 읽고 [둘러보기] (http://stackoverflow.com/tour) 여기에 더 많은 질문을 게시하기 전에. 행운을 빕니다. – shellter