Можно ли переместить переменные выше тех, от которых они зависят? - PullRequest
1 голос
/ 17 сентября 2011

Я хочу, чтобы переменные конфигурации были на самом верху, но они зависят от других переменных, которые должны быть над ними. Как я могу (если это возможно) переместить секцию не трогать ниже секции config ?

Для иллюстрации:

#!/bin/bash

#== don't touch ==
 dirpath=$(dirname "$1")
 dirname=$(basename $(dirname "$1"))

#== config ==
 path="$dirpath"   #using the value of $dirpath straight in config would be ugly.
 name="$dirname" 

 echo "$path" + "$name"

.. но я хочу переместить config выше всего остального:

#!/bin/bash

#== config ==
 path="$dirpath"   #using the value of $dirpath straight in config would be ugly.
 name="$dirname" 

#== don't touch ==  
 dirpath=$(dirname "$1")
 dirname=$(basename $(dirname "$1"))

 echo "$path" + "$name"

1 Ответ

2 голосов
/ 17 сентября 2011

Обновление

Обычный шаблон:

#!/bin/bash
function main()
{ 
    prepare
    do_step1 args ...
    do_step2 args ...
    do_step3 args ...
    do_step4 args ...

    exit 0
}

function prepare() { .... }
function do_step1() { ....}
function do_step2() { ....}
function do_step3() { ....}
function do_step4() { ....}

// entry point
main

Пока определения (под) функций предшествуют вызову, они будут найдены красиво.


Дословные ответы:

Нет, для этого вам понадобятся функции, или вы наберете:

export dynamic="interesting"
function getsomething() { echo -n "$dynamic"; }

export dynamic="stuff"
echo "$(getsomething)"

будет отображать "материал", а не "интересно""


Подход eval:

export param=value1
export dependent='$param' # (note the SINGLE quotes)

export param=value2
eval "echo $dependent"

напечатает" value2 ", а не" value1 "

Косметика:

Если этопросто не трогайте исходный файл включения:

  source donot_touch.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...