Решено: Bash script. Передача команды в качестве параметра.

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
corporator
Сообщения: 10
ОС: OpenSUSE 11.1, 11.2

Решено: Bash script. Передача команды в качестве параметра.

Сообщение corporator »

Здравствуйте, многоуважаемые форумчане.
Делаю большой скрипт, и споткнулся на одном месте. Весь вечер не могу решить, прогуглил весь инет.
Итак, суть в следующем: в скрипте имеется строка, представляющая собой команду shell. Эта строка передается как параметр в одну из функций скрипта, где дожна выполниться команда, представленная строкой. Все вроде просто, только есть одно НО. В команде присутствуют пробелы.

Вот нерабочий пример (чтоб было понятно, что требуется):

Код: Выделить всё

#!/bin/bash

ARG='touch "New File"'

func()
{
$1
}

func $ARG

exit 0


В этом примере хотим создать файл с именем New File, а получаем в результате два файла: "New и File".

Можно ли как-то это сделать в Bash?

ЗЫ. Плиз, не предлагайте менять IFS.
Если ты чего-нибудь хочешь, вся Вселенная будет способствовать тому, чтобы желание твое сбылось.
Пауло Коэльо "Алхимик"
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Решено: Bash script. Передача команды в качестве параметра.

Сообщение Folderx »

Код: Выделить всё

[guest@station 2]$ func() { $*; };
[guest@station 2]$ ARG="eval touch \"New File\"";
[guest@station 2]$ func $ARG
[guest@station 2]$ ll
итого 4
-rw-rw-r-- 1 guest guest 0 Фев  7 08:00 New File


Код: Выделить всё

[guest@station 2]$ func() { eval "$*"; };
[guest@station 2]$ ARG="touch \"New File\"";
[guest@station 2]$ rm *
[guest@station 2]$ func $ARG
[guest@station 2]$ ll
итого 4
-rw-rw-r-- 1 guest guest 0 Фев  7 08:04 New File
[guest@station 2]$
Спасибо сказали:
corporator
Сообщения: 10
ОС: OpenSUSE 11.1, 11.2

Re: Решено: Bash script. Передача команды в качестве параметра.

Сообщение corporator »

Спасибо, то, что надо! :rolleyes:
Тему можно закрывать.
Если ты чего-нибудь хочешь, вся Вселенная будет способствовать тому, чтобы желание твое сбылось.
Пауло Коэльо "Алхимик"
Спасибо сказали:
Ответить