Bash-скрипт - пытается найти путь к скрипту [duplicate]

Вот версия, адаптированная из приведенной выше пары ответов, которая производит результаты в порядке, указанном в OP, и возвращает строки вместо массивов:

function *cartesianProduct(...arrays) {
  if (!arrays.length) yield [];
  else {
    const [tail, ...head] = arrays.reverse();
    const beginning = cartesianProduct(...head.reverse());
    for (let b of beginning) for (let t of tail) yield b + t;
  }
}

const first = ['a', 'b', 'c', 'd'];
const second = ['e'];
const third =  ['f', 'g', 'h', 'i', 'j'];
console.log([...cartesianProduct(first, second, third)])
0
задан Closed Eagle 17 January 2019 в 17:13
поделиться

2 ответа

DIR=$( cd $(dirname [110]) ; pwd )

предположим, что ваш скрипт /home/lanzhiwang/work/py_web/multimediaapi_lab/pukep.py

$ 0 - это pukep.py

$ (dirname $ 0) - это / home / lanzhiwang / work / py_web / multimediaapi_lab /

cd / home / lanzhiwang / работа / py_web / multimediaapi_lab /

pwd

DIR = / home / lanzhiwang / работа / py_web / multimediaapi_lab /

0
ответ дан lanzhiwang 17 January 2019 в 17:13
поделиться

Он определяет каталог, содержащий скрипт (который может отличаться от текущего рабочего каталога).

Обычно вы используете такой шаблон, если вам нужно ссылаться на файлы в одном каталоге:

# contents of myscript.sh
DIR=$( cd $(dirname [110]) ; pwd)
cat $DIR/some-file-next-to-my-script.txt

Затем из в любом месте в файловой системе:

/path/to/myscript.sh

фактически напечатает содержимое some-file-next-to-my-script.txt. Если бы вы придерживались pwd в одиночку, вы бы искали этот файл в вашем текущем рабочем каталоге, что может или не может быть тем поведением, которое вы хотите.

Разбивка команды:

$( cd $(dirname [112]); pwd)
        ^^^^^^^^^^

Идентифицирует каталог, содержащий [116]. Если вы вызвали скрипт как /path/to/myscript.txt, то dirname [118] оценивается как /path/to. Если вы вызвали его как ./myscript.txt, то dirname [1111] просто оценивается как ..

$( cd $(dirname [113]); pwd)
^^^^^^^^^^^^^^^^^^^^    ^

Перейдите в каталог, как и раньше, но, что важно, в подоболочке , чтобы ваш рабочий каталог не был изменен.

Затем финал pwd просто распечатывает этот текущий рабочий каталог, который будет всегда расширяться до полного пути. Это значение затем сохраняется в переменной DIR в вашем примере.

0
ответ дан dtanabe 17 January 2019 в 17:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: