Чем $ (управляет) и делает?

Я видел следующий синтаксис в сценарии удара:

 >$(command) &

Я знаю что амперсанд & в конце делает команду выполненной в фоновом режиме, но я никогда не видел его в сочетании со знаком доллара плюс скобки вокруг команды.

Что это делает?

9
задан 6 October 2016 в 07:33

2 ответа

Короткий ответ

Учитывая синтаксис $(command) &, результат совпадает с при взятии вывода выполнения просто command и затем попробованный для выполнения этого как команды. И все это было бы сделано в фоновом режиме, означая, что не будет никакого видимого вывода или зависающий в терминале.

Например, если нам назвали текстовый файл mycommand.txt с содержанием:

echo "Hello World"

Затем команда

$(cat mycommand.txt) &

было бы эквивалентно выполнению

echo "Hello World" &

Но так как мы добавили амперсанд (&), мы не видели бы вывода от этой команды, таким образом, это будет довольно бесполезно в этом примере.


Длинный ответ (объяснение)

Знак доллара $ (Переменная)

Знак доллара перед вещью в круглой скобке обычно относится к переменной. Это означает, что эта команда или передает аргумент той переменной из сценария удара или получает значение той переменной для чего-то. Различие в сценариях удара для обращения и объявления переменных идет как таковое:

Объявите переменную без знака доллара и назовите его со знаком доллара. Например, сценарий, который содержит это

#!/bin/bash
STR="Hello World!"
echo $STR

Произвел бы это

Hello World!

Круглая скобка () - Замена команды

Замена команды позволяет выводу команды заменять саму команду. Замена команды происходит, когда команда включается следующим образом:

$(command)

или

`command`

Bash выполняет расширение путем выполнения команды в подсреде оболочки и замены замены команды стандартным выводом команды с любыми запаздывающими удаленными новыми строками. Встроенные новые строки не удалены, но они могут быть удалены во время разделения слова. Замена команды $(cat file) может быть заменен эквивалентом, но быстрее $(< file).

Амперсанд & - Фоновый процесс

И затем амперсанд, или & символ, как Вы сказали, используемый для выполнения его в фоновом режиме.

17
ответ дан 23 November 2019 в 04:49

это берет вывод "команды" как команда и выполнения это в фоновом режиме. Функционально сопоставимо с "оценкой"

2
ответ дан 23 November 2019 в 04:49

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

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