Рейтинг:0

First argument should convert to a variable and execute

флаг cn

I have declared arg="echo demo"

When we execute the command my_command arg, then arg should be converted to $arg and should be executed like

my_command () {
    $arg
}

How do I call $1 as a variable?

Liso avatar
флаг sd
Разве то, что вы объявили `arg="echo demo"`, не является переменной?
tripleee avatar
флаг nz
Ваша функция не может корректно работать со строками в кавычках. Присваивать команду строке, вероятно, в любом случае неправильно. Наверное см. https://mywiki.wooledge.org/BashFAQ/050
Рейтинг:2
флаг us

оценка встроенная оболочка делает то, что вы хотите:

$ помочь оценить
eval: eval [аргумент ...]
    Выполнять аргументы как команду оболочки.

    Объедините ARG в одну строку, используйте результат в качестве входных данных для оболочки,
    и выполнить полученные команды.

Таким образом, ваша функция может выглядеть так:

моя_команда () {
    оценка $1
}

Вместо $1 вы также можете поставить $* и моя_команда будет принимать произвольное количество аргументов.

Обратите внимание, что к тому времени моя_команда немного меньше, чем псевдоним для оценка, так что вы могли бы также сделать:

псевдоним my_command=eval

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.