Я видел следующий синтаксис в скрипте bash:
>$(command) &
Я знаю, что амперсанд &в конце запускает команду в фоновом режиме, но я никогда не видел ее в сочетании со знаком доллара и скобками вокруг команды.
Что оно делает?
Я видел следующий синтаксис в скрипте bash:
>$(command) &
Я знаю, что амперсанд &в конце запускает команду в фоновом режиме, но я никогда не видел ее в сочетании со знаком доллара и скобками вокруг команды.
Что оно делает?
Ответы:
Учитывая синтаксис $(command) &, то результат будет таким же , как если бы вы взяли выход бежать просто , commandа затем пытался бежать , что в качестве команды. И все это будет сделано в фоновом режиме, что означает, что не будет видимого вывода или зависания в терминале.
Например, если у нас был текстовый файл с именем mycommand.txtс содержанием:
echo "Hello World"
Тогда команда
$(cat mycommand.txt) &
будет эквивалентно бегу
echo "Hello World" &
Но так как мы добавили амперсанд ( &), мы не увидели бы никакого вывода этой команды, поэтому в этом примере это было бы довольно бесполезно.
$(переменная)Знак доллара перед вещью в скобках обычно относится к переменной. Это означает, что эта команда либо передает аргумент этой переменной из скрипта bash, либо получает значение этой переменной для чего-либо. Разница в сценариях bash для вызова и объявления переменных заключается в следующем:
Объявите переменную без знака доллара и назвать его с знаком доллара. Например, скрипт, который содержит это
#!/bin/bash
STR="Hello World!"
echo $STR
Вывел бы это
Hello World!
()- Подстановка командПодстановка команд позволяет выводу команды заменить саму команду. Подстановка команд происходит, когда команда заключена следующим образом:
$(command)
или
`command`
Bash выполняет расширение, выполняя команду в среде подоболочек и заменяя подстановку команды стандартным выводом команды, удаляя все завершающие символы новой строки. Введенные новые строки не удаляются, но они могут быть удалены во время разделения слов. Подстановка команд $(cat file)может быть заменена эквивалентной, но более быстрой $(< file).
&- Фоновый процессА затем амперсанд, или &символ, как вы сказали, используется для запуска в фоновом режиме.
он принимает вывод команды как команду и запускает ее в фоновом режиме. Его функционально сравним с "Eval"
$( ), но нет отдыха. Просто$(command) &это меня смущает.