在这里缩进doc

时间:2018-04-04 17:21:23

标签: bash heredoc

我有一个安装jackett的函数,该函数包含写一个服务文件的heredoc。

问题是我需要缩进EOF但它不会工作,我尝试过多次代码和示例似乎没有用。

我已尝试过以下两种情况,包括和不使用“”,'', - 围绕EOF

cat <<-EOF > /etc/systemd/system/jackett.service
EOF

cat > /etc/systemd/system/jackett.service <<-EOF
EOF

cat <<-EOF
EOF > /etc/systemd/system/jackett.service 

这是我写的实际代码。

sudo apt-get update -y

sudo apt-get install -y libcurl4-openssl-dev bzip2 mono-devel -y

cd /tmp

wget https://github.com/Jackett/Jackett/releases/download/v0.8.832/Jackett.Binaries.Mono.tar.gz

sudo tar -xvf Jackett*

sudo mv Jackett/* /opt/jackett

sudo chown -R plex-admin:plex-admin /opt/jackett

cat <<-EOF > /etc/systemd/system/jackett.service
    [Unit]
    Description=Jackett Daemon
    After=network.target

    [Service]
    User=$Admin
    Restart=always
    RestartSec=5
    Type=simple
    ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe --NoRestart
    TimeoutStopSec=20

    [Install]
    WantedBy=multi-user.target
EOF

sudo systemctl enable jackett

sudo service jackett start

请帮忙。

修改1

根据Charles Duffy的评论

我的测试文件是

#!/bin/bash

cat -A  <<-EOF
    [Unit]
    Description=Jackett Daemon
    After=network.target

    [Service]
    User=$Admin
    Restart=always
    RestartSec=5
    Type=simple
    ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe --NoRestart
    TimeoutStopSec=20

    [Install]
    WantedBy=multi-user.target
EOF

运行bash脚本时的输出是

    [Unit]$
    Description=Jackett Daemon$
    After=network.target$
$
    [Service]$
    User=$
    Restart=always$
    RestartSec=5$
    Type=simple$
    ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe --NoRestart$
    TimeoutStopSec=20$
$
    [Install]$
    WantedBy=multi-user.target$

修改2

所以原子有一个很酷的功能,叫做'将所有空间转换成标签'我选择了我的猫功能,现在输出-A在下面。

[Unit]$
Description=Jackett Daemon$
After=network.target$
$
[Service]$
User=$
Restart=always$
RestartSec=5$
Type=simple$
ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe --NoRestart$
TimeoutStopSec=20$
$
[Install]$
WantedBy=multi-user.target$

它有效!

1 个答案:

答案 0 :(得分:0)

我在原子中选择了我的猫声明然后去了;套餐&gt;空白&gt;将空格转换为制表符。

带-A的cat函数输出低于。

[Unit]$
Description=Jackett Daemon$
After=network.target$
$
[Service]$
User=$
Restart=always$
RestartSec=5$
Type=simple$
ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe --NoRestart$
TimeoutStopSec=20$
$
[Install]$
WantedBy=multi-user.target$

它有效!