Как объединить "исходные" bash скриптов в один bash скрипт - PullRequest
0 голосов
/ 30 мая 2020

Я написал инструмент-скрипт bash, который содержит main.sh, common.sh, config.sh. main.sh использовал общий source для загрузки относительных файлов.

Я хочу объединить все файлы в одиночный файл для удобства распространения. Есть ли лучшая практика для этого?

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

Рассмотрим следующий сценарий из: Замена 'исходного файла' его содержимым и раскрытие переменных в bash

Он будет «встроить» исходный файл (на который ссылается ' . 'или заявлением' источник '). Он не поддерживает вызов источника с параметрами, поиск файлов через PATH env var, et c. Надеюсь, вам эти функции не понадобятся.

#!/usr/bin/env bash
while read line; do
    if [[ "$line" =~ (\.|source)\s+.+ ]]; then
        file="$(echo $line | cut -d' ' -f2)"
        echo "$(cat $file)"
    else
      echo "$line"
    fi
done < "$1"
0 голосов
/ 30 мая 2020

В вашем main.sh замените source common.sh содержимым common.sh и source config.sh содержимым config.sh. Когда вы используете команду source, Bash выполняет содержимое файла, переданного в качестве аргумента в текущей оболочке (в отличие от подоболочки). Таким образом, удаление кода из других файлов и их перемещение в main.sh будет иметь тот же эффект.

Подробнее об источнике: https://ss64.com/bash/source.html

Соответствующий вопрос суперпользователя : https://superuser.com/questions/46139/what-does-source-do

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