Запустите скрипт sh в цикле Tcl foreach - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть простой bash-скрипт test.sh, который принимает четыре аргумента.

#!/bin/bash
echo "1: $1"
echo "2: $2"
echo "3: $3"
echo "4: $4"

Я пытаюсь вызвать его из Tcl-скрипта test.tcl

exec bash test.sh arg1 arg2 arg3 arg4

foreach i {1 2 3} {
    exec bash test.sh arg1 arg2 arg3 arg4
}

Первый вызов скрипта выводится так, как я ожидаю, но вызовы цикла foreach, похоже, никогда ничего не делают.Фактически, команду exec можно заменить на exec ls, чтобы сделать вещи еще проще;вызов вне цикла работает нормально, но вызов из цикла ничего не делает.

РЕДАКТИРОВАТЬ Как указано в комментариях, вероятно важно упомянуть, что я использую консоль Tcl, встроенную впакет программ (VMD, визуальная молекулярная динамика).Из этого интерфейса терминала я вызываю эти сценарии «в интерактивном режиме» и вижу вывод на терминале из exec вне цикла, но не из внутри цикла.

Моя работа приостановлена ​​из-заэто, есть идеи?

1 Ответ

0 голосов
/ 24 ноября 2018

Очевидная «проблема» связана с попыткой запустить эти сценарии «в интерактивном режиме».Если я изменю сценарий bash как

#!/bin/bash
echo "1: $1" > $5
echo "2: $2" >>$5
echo "3: $3" >>$5
echo "4: $4" >>$5

, а сценарий tcl как

exec bash test.sh arg1 arg2 arg3 arg4 file1.txt

foreach i {1 2 3} {
    exec bash test.sh arg1 arg2 arg3 arg4 file2.txt
}

, я вижу, что оба файла, file{1,2}.txt, созданы правильно.Таким образом, он автоматически печатает на интерфейс терминала, когда скрипт вызывается вне цикла, но не при вызове внутри.Это объясняется больше в комментариях выше.

...