我不知道我的bash脚本出了什么问题。当我在终端中运行它时,一个命令一个命令地在终端中单独运行每个命令,它工作了。
#!/bin/bash
sudo su <<EOF
mkdir /home/ubuntu/backup/
cp "$(ls -t /usr/lib/unifi/data/backup/autobackup | head -1)" /home/ubuntu/backup/
curl --insecure --user root:password -T "$(ls -t /home/ubuntu/backup/ | head -1)" sftp://vps2.duckdns.org:/root/backup.unf
EOF
但是,当我运行上面的bash脚本时,请给予大量的错误
bash -v test.sh
#!/bin/bash
sudo su <<EOF
mkdir /home/ubuntu/backup/
cp "$(ls -t /usr/lib/unifi/data/backup/autobackup | head -1)" /home/ubuntu/backup/
curl --insecure --user root:password -T "$(ls -t /home/ubuntu/backup/ | head -1)" sftp://vps2.duckdns.org:/root/backup.unf
EOF
ls: cannot access '/usr/lib/unifi/data/backup/autobackup': Permission denied
ls: cannot access '/home/ubuntu/backup/': No such file or directory
cp: cannot stat '': No such file or directory
curl: (78) Could not open remote file for reading: SFTP server: No such file
任何帮助都将不胜感激!
短暂性脑缺血
1条答案
按热度按时间5tmbdcev1#
它试图在原始shell中执行命令替换,该shell以普通用户的权限运行。它们需要由
su
执行。引用EOF
标记以防止在here-document中进行扩展。