Как заставить псевдоним работать, когда мне нужно вызвать более одного двоичного файла в одной команде?

Скажем, у меня есть два двоичных файла: двоичный1 и двоичный.

Каждый из них имеет свой собственный набор параметров: options1 и options2.

Пользователи должны вызвать команду, которая соответствует этой структуре:

binary1 options1 binary2 options2

Однако я хочу установить options2 самостоятельно и заставить их выполнить следующее:

binary1 options1 alias

где

alias='binary2 options2'

Есть ли способ заставить это работать под bash/tcsh? Я работаю под SLES 11 SP2 над 64-битной архитектурой.

2 ответа

Вы должны иметь двоичный код1, а параметры1 должны быть такими, какими они хотят начать? Затем: определите функцию "что-то":

something () {
   options2="...." #you define them as you want, either here or from another source
   binary1="$1" ; shift
   "$binary1" "$@"
   binary2  $options2
}

(и это определено в файлах входа bash)

И пусть они бегут:

something binary1 options1

Таким образом, они действительно могут сходить с ума на options1, например:

something touch file1 file2 "file3 with extra spaces" file4

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

#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*

Если вы назовете этот файл "dplace" и поместите его в путь пользователя в каталоге, в котором выполняется поиск перед каталогом, в котором находится настоящий dplace, то вместо этого он будет прозрачно запускать сценарий оболочки (не забывайте "перефразировать", когда вы пробуем это).

Я предполагаю, что TOP_PROC уже определен в среде.

Другие вопросы по тегам