Как добавить командную строку Linux в файл?

RewriteEngine On  
RewriteCond %{HTTP_HOST}          ^(?:www\.)?(.+)$ [NC]
RewriteRule ^/t/client/(care/.*)$ http://www.theshop.com/$1 [NC,R,L]

Это перенаправит
http://www.pathfinder.com/T/client/care/foo.html
илиhttp://pathfinder.com/T/client/care/foo.html
кhttp://theshop.com/care/foo.html

использование флагов

Если вы хотите перенаправить только страницу входа, используйте

RewriteRule ^/t/client(/care/login.html)$ http://www.theshop.com$1 [NC,R,L]
0
26.04.2021, 18:31
2 ответа

Расширения в документе здесь -выполняются оболочкой, если сами расширения не цитируются или сам документ здесь -не цитируется.

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

cat <<EOL > Vagrantfile
    Vagrant.configure("2") do |config|
    config.vm.define "vagrant-host"
    config.vm.provision "shell", inline: <<-SHELL
        sudo su
        apt update
        ipaddress=\\\$(hostname -I | awk '{print \\\$2}')
        echo "*** IP address is \\\$ipaddress ***"
    SHELL
    end
EOL

Обратите внимание, что мы должны заключать в кавычки не только $в подстановке команды, но также $2в коде awkи $ipaddressв вызове echo. На самом деле нам нужно дважды заключить эти строки в кавычки, используя \\\, так как они на самом деле являются частью встроенного здесь -документа(SHELL). каждый \\\$будет заменен на \$, когда будет написано Vagrantfile.

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

.
cat <<'EOL' > Vagrantfile
    Vagrant.configure("2") do |config|
    config.vm.define "vagrant-host"
    config.vm.provision "shell", inline: <<-'SHELL'
        sudo su
        apt update
        ipaddress=`hostname -I | awk '{print $2}'`
        echo "*** IP address is $ipaddress ***"
    SHELL
    end
EOL

Здесь я решил процитировать как встроенный документ здесь -, так и внешний документ здесь -.

В зависимости от того, как и где используется этот код, вы можете убедиться, что и первый, и встроенный здесь -документы имеют отступы с табуляцией и что оба здесь -документа начинаются с<<-(<<-'EOL'и<<-'START'). Это гарантирует, что встроенный здесь -документ может быть правильно проанализирован (окончание SHELLдолжно быть первым в строке после создания Vagrantfile).

Обратите внимание, что я не комментировал содержание документа здесь -с точки зрения того, чего он пытается достичь. Например, я не знаю, имеет ли смысл sudo suили нет.

1
28.04.2021, 22:50

Вы должны экранировать обратные кавычки в вашем документе с помощью обратной косой черты:

        ipaddress=\`hostname -I | awk '{print $2}'\`
0
28.04.2021, 22:50

Теги

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