명령에서 발견된 모든 폴더가 다음 정의를 사용하여 생성 dir0
되도록 디렉터리에서 폴더를 검색하는 bash 스크립트를 만드는 방법이 있습니까 ?dir1
dir0
dir1-command
dir1-command() {
cd dir0/dir1
echo "inside dir0/dir1"
cd -
}
편집하다:제가 해결하려는 구체적인 문제는 다음과 같습니다. 및 같은 하위 폴더가 scripts
포함된 폴더가 있습니다 . 예를 들어 시작 방법 은 다음과 같습니다.scripts/haskell_script1
scripts/haskell_script2
scripts/haskell_script1
haskell_script1() {
cd scripts/haskell_script1
stack exec haskell_script1 -- $@
cd -
}
그래서 제가 하고 싶은 것은 ~/.bashrc
소스를 찾을 때마다 폴더를 스캔 scripts
하고 여러 가지 양식 명령을 생성하여 haskell_scriptX
시간을 절약하는 것입니다. 이렇게 하면 내가 만드는 모든 하스켈 프로젝트/폴더 폴더에 대해 명령을 수동으로 만들 필요가 없습니다.
답변1
.bashrc에 다음을 추가하세요.
for script in scripts/haskell_script*
do
# strip off the leading "scripts/" portion
script=${script##*/}
eval "function ${script} {
cd scripts/${script}
stack exec ${script} -- \$@
cd -
}"
done
해당 정의에서 조기에 평가될 수 있는 eval
모든 항목 에 대해 주의해야 합니다. 이것이 $
제가 에서 탈출하는 이유 입니다 $@
.