переменная часть в пути переменной в скрипте ksh - PullRequest
0 голосов
/ 14 февраля 2019

Извините, если что-то подобное уже отвечалось в прошлом, но я не смог его найти.Я пишу сценарий для выполнения некоторых служебных задач, и я застрял в шаге ниже.Чтобы поставить вас в записи, это скрипт, который читает файл конфигурации, чтобы иметь возможность использовать его в качестве стандартного протокола в различных средах.

Проблема с этим кодом:

# Check if destination folder exist, if not create it.
    if [ ! -d ${V_DestFolder} ]; then # Create folder
        F_Log "${IF_ROOT} mkdir -p ${V_DestFolder}"
        ${IF_ROOT} mkdir -p ${V_DestFolder}
        continue
    fi        

    # If movement, check write permissions of destination folder.
    V_CheckIfMovement=`echo $1|grep @`
    if [ $? -eq 0 ]; then # File will be moved.
      V_DestFolder=`echo $1|awk -F"@" {'print $2'}`
      if [ ! -w ${V_DestFolder} ]; then # Destination folder IS NOT writable.
        F_Log "Destination folder ${V_DestFolder} does not have WRITE permissions. Skipping."
        continue
      fi
    fi

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

Здесь вы можете увидеть часть файла конфигурации, которая читается на этом шаге:

app/tom*/instances/*/logs|+9|/.*\.gz)$/|move@/app/archive/tom*/logs

Я должен сказать, что файлы правильно перемещаются, когда яизмените tom * пункта назначения для чего-либо, например «test» или любого слова без * (как и должно быть).

Что мне нужно знать, так это как я могу использовать переменную в «tom *» в пункте назначения,Переменная должна содержать то же имя tom * в источнике, которое я использую в качестве имени ячейки.

Это потому, что я использую разные ячейки tomcat со ссылкой tom7 или tom8 плюс 3 буквы для описания каждой,как пример tom7dog или tom7cat.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы должны дать оболочке шанс оценить.

V_DestFolder=`echo $1|awk -F"@" {'print $2'}`
for p in ${V_DestFolder}; do
      if [ ! -w ${p} ]; then 
...