Problema ao configurar um caminho padrão no BASH

3

Eu tenho uma questão de script BASH. Eu gostaria da menção de que sou novo no script BASH; no entanto, não sou novo em programação. Estou desenvolvendo um simples script BASH para assistir a um determinado projeto de bússola. Meu script é mostrado abaixo.

Gostaria de permitir que um usuário, opcionalmente, insira um caminho personalizado ou use o valor padrão http_path . Não sei como definir a variável path igual à variável http_path , onde meu diretório Apache padrão está localizado usando meu script atual. Se alguém tiver melhores sugestões e / ou recursos para aprender a escrever scripts BASH, por favor, compartilhe!

Observação: pesquisei este site, o Google e o stackoverflow para obter uma resposta. Se você encontrar um com uma solução para o meu problema, por favor, avise-me!

#!/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

Veja a solução do problema aqui

    
por djthoms 27.01.2013 / 21:06

1 resposta

2

Ao atribuir um valor a path , deixe o primeiro sinal $ no primeiro loop while.

Você só precisa fazer: path=$http_path .

Editar

Eu só percebi depois que postei que você também quer recursos para aprender bash. Eu pessoalmente achei o Guia Avançado de Roteiro de Bash útil. É um pouco datado, se bem me lembro, mas é mais do que suficiente. Também #bash no Freenode é um ótimo lugar. Eles nem sempre são os mais amigáveis, mas são definitivamente extraordinariamente qualificados.

Além disso, nunca tenha medo de testar algo na linha de comando. Esse é o seu interpretador interativo (se você fez alguma programação em Ruby ou Python).

Editar 2

O problema real era que depois de digitar, o usuário não sairia do loop, então o código precisava ser alterado para:

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
    
por 27.01.2013 / 21:28