BASH에서 기본 경로 설정 문제

BASH에서 기본 경로 설정 문제

나는 주어진 나침반 프로젝트를 보기 위해 간단한 BASH 스크립트를 개발 중입니다. 내 스크립트는 아래와 같습니다.

사용자에게 사용자 정의 경로를 입력하거나 기본값을 사용할 수 있는 옵션을 제공하고 싶습니다 http_path. 현재 스크립트를 사용하여 기본 Apache 디렉토리가 있는 위치 path와 동일한 변수를 설정하는 방법을 잘 모르겠습니다 . http_pathBASH 스크립트 방법을 배우기 위한 더 나은 제안 및/또는 리소스가 있는 경우 공유해 주세요!

노트:이 사이트, Google 및 stackoverflow에서 답변을 검색했습니다. 내 문제를 해결할 수 있는 사람을 찾으면 알려주세요!

#!/bin/bash
# This script will watch a given compass project
http_path=/var/www/

echo -n "Enter in a new path and press. To use the default path $http_path press [ENTER] twice"

while read path; do
    if [ -z "${path}" ]; then
        clear  
        # these two lines enable the script to work if I do not
        # I do not prompt for default path. It's been tested and works
        # echo "That was empty, do it again!"
        # echo -n "Enter in a compass project directory and press [ENTER]"
        echo "Are you sure you would like to use the default path? Press [ENTER] to continue..."
        $path=$http_path
    else
        echo "Checking now..."
        break
    fi
done

echo -n "Enter in a project to watch and prss [ENTER]"

while read project; do
    if [ -z "${project}" ]; then
        clear  
        echo "That was empty, do it again!"
        echo -n "Enter in a compass project name and press [ENTER]"
    else
        echo "Checking now..."
        break
    fi
done

echo "Watching" $project "project in directory" $path
echo "To exit project press Command/Control + C"

cd $path
compass watch $project

문제 해결 방법 보기여기

답변1

값을 할당할 때 첫 번째 while 루프에서 선행 기호를 path생략합니다 .$

당신이 해야 할 일은: 입니다 path=$http_path.

편집하다

Bash를 배우려면 리소스도 필요하다는 것을 게시한 후에 깨달았습니다. 개인적으로 찾아보니고급 Bash 스크립팅 가이드유용해진다. 제 기억이 맞다면 좀 오래됐지만 적당합니다. 프리노드(Freenode)도 #bash좋은 곳입니다. 그들은 항상 가장 친절하지는 않지만 확실히 지식이 풍부합니다.

또한 명령줄에서 무언가를 테스트하는 것을 두려워하지 마십시오. 이것은 대화형 인터프리터입니다(Ruby 또는 Python 프로그래밍을 수행한 경우).

편집 2

실제 문제는 사용자가 Enter 키를 누른 후 루프를 종료하지 않는다는 것입니다. 따라서 코드를 다음과 같이 변경해야 합니다.

while read path; do
    if [ -z "${path}" ]; then
        clear
        echo "Are you sure you would like to ..."
        read prompt
        if [ -n "${prompt}" ] ; then
            continue
        fi
        path=$http_path
        break
    else
        # etc.
    fi
done

관련 정보