缩进这里文档
Indenting here doc
我有一个安装 jackett 的函数,该函数包含编写服务文件的 heredoc。
问题是我需要缩进 EOF 但它不起作用,我已经尝试了多次迭代代码和示例 none 似乎有效。
我在 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
所以 atom 有一个很酷的功能,叫做 'convert all spaces to tabs' 我现在选择了我的 cat 函数,下面是带有 -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$
而且有效!
我在atom中选择了我的cat语句然后去了;包 > 空格 > 将空格转换为制表符。
带有 -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$
而且有效!
我有一个安装 jackett 的函数,该函数包含编写服务文件的 heredoc。
问题是我需要缩进 EOF 但它不起作用,我已经尝试了多次迭代代码和示例 none 似乎有效。
我在 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
所以 atom 有一个很酷的功能,叫做 'convert all spaces to tabs' 我现在选择了我的 cat 函数,下面是带有 -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$
而且有效!
我在atom中选择了我的cat语句然后去了;包 > 空格 > 将空格转换为制表符。
带有 -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$
而且有效!