为什么 bash 在从存档中提取文件后执行文件?

Val*_*sso -2 bash

我有以下 bash 脚本:

#!/bin/bash
set -e
cd /var/www/html/mydir
tar cvf backup.tar file1.php file2.php ...
mysqldump -u$1 -p$2 $3 mytable > sqlbackup.sql
tar xvf mypatch.tar
mysql -u$1 -p$2 $3 < mysqlpatchfromthetarpatch.sql
echo 'Success.'
Run Code Online (Sandbox Code Playgroud)

愤怒的编辑: 我不明白投反对票。如果那个人无法从头到尾阅读帖子,我只想提取一些文件,而不是运行它们。这是错误:

[root@webserver]# ./myscript.sh user "password" dbname
file1.php
: No such file or directorycle.php: line 1: ?php
include/DatabaseObject/Article.php: line 2: class: command not found
Run Code Online (Sandbox Code Playgroud)

file1.php 被称为 include/Controllers/AdminController.php,下一个文件被称为 include/DatabaseObject/Article.php,我假设这就是我得到的原因

: 没有这样的文件或目录cle.php : 第 1 行: ?php

解压我的文件后,它因 file1.php 中的错误而中断。我能做什么?

Zor*_*che 6

我怀疑您没有给我们完整的脚本,并且您已经匿名了导致您的问题的关键和细节 将 aset -x放在脚本的顶部。这基本上回显了正在运行的每个命令。如果您仍然无法弄清楚这个详细的输出,请发布set -x报告错误之前发出的确切命令。