Bash объединяет несколько команд в один лайнер [закрыто]

Есть ли способ объединить следующее в изящный «однострочник»:

echo "free -m" > /tmp/dC4v2cK
bash /tmp/dC4v2cK
-2
задан 14 August 2012 в 02:38
2 ответа

Или, если вам действительно нужна подоболочка:

/bin/bash -c "free -m"
5
ответ дан 5 December 2019 в 21:03

Я думаю, вы ищете eval (например, foo = 'free -m'; eval $ foo ). Имейте в виду, что выполнение чего-то подобного имеет последствия для безопасности, если $ foo поступает из ненадежного источника, вы можете случайно сделать что-то плохое. Например, что, если кому-то удалось добиться, чтобы эта линия произошла. foo = 'rm -rf /'

$ help eval
eval: eval [arg ...]
    Execute arguments as a shell command.

    Combine ARGs into a single string, use the result as input to the shell,
    and execute the resulting commands.

    Exit Status:
    Returns exit status of command or success if command is null.
5
ответ дан 5 December 2019 в 21:03

Теги

Похожие вопросы