Создание простого сценария оболочки, который выполняет программу, переданную в качестве аргумента - PullRequest
1 голос
/ 24 апреля 2011

Я строю программу, которая помогает в отладке памяти программ на C.Я звоню

execlp("gnome-terminal","gnome-terminal","-e",command,(char*)0);

, чтобы открыть новое окно терминала, в котором запускается отлаживаемая программа.Я делаю это, чтобы мои данные отладки не смешивались с выходными данными программы пользователя.Поскольку мне нужно настроить переменную среды перед запуском программы пользователя, команда var на самом деле является именем сценария оболочки, в котором я передаю программу пользователя в качестве первого аргумента.

Вот мой скрипт:

#!/bin/bash

export LD_PRELOAD="./mylib.so"
$1

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

Например, я хочу назвать мой скрипт так:

myScript.sh usersProgram arg1 arg2 etc

Как правильно запустить программу пользователя внутри скрипта и передать все аргументы ему?

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 апреля 2011

Используйте "$@", который будет правильно обрабатывать все аргументы.

3 голосов
/ 24 апреля 2011

Предполагая, что аргументы для программирования всегда начинаются со 2-го аргумента, я бы предложил сделать это так:

#!/bin/bash

PROG=$1
shift
$PROG "$@"

Практически, просто указав "$ @" вместо трех строк выше, также будет работать. Но, таким образом, вы можете легко выполнить некоторые манипуляции на основе $ PROG перед тем, как выполнять его.

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