Как запустить сценарий оболочки из другого сценария оболочки, читая имя первого сценария оболочки из файла CSV - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть родительский скрипт (parent.sh), написанный на bash:

#!/bin/bash
IFS=","
cat testing.csv | while read line 
do
abcd="$line"
eval "$abcd";
done

И дочерний скрипт (child.sh), написанный на bash, который я хочу вызвать из parent.sh:

#!/bin/bash

date

В родительском скрипте я делаю csv-файл cat (testing.csv), чтобы прочитать имя child.sh, имя дочернего файла, указанное в столбце csv-файла, как показано ниже:

./child.sh

Примечание. Все файлы child.sh, parent.sh и testing.csv находятся по одному пути

Я всегда получаю сообщение об ошибке «нет такого файла или каталога» и не могу выполнить child.sh из parent.sh при чтении его имени из csv.

дочерний и родительский сценарий имеют разрешения chmod 777 Я перепробовал весь синтаксис для выполнения child внутри parent, например: sh child.sh, bash child.sh, исходный файл child.sh, но безуспешно.

Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 05 сентября 2018

Итак, проблема в том, что в файле CSV есть окончания строк Windows. Если вы запускаете

dos2unix testing.csv

проблема должна исчезнуть.

Кроме того, использование IFS и eval может расстроить людей. Попробуйте что-то вроде

#!/bin/bash

while IFS="," read executable
do
        "$executable"
done <testing.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...