Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash命令在查找匹配项时出现意外的EOF_Bash - Fatal编程技术网

bash命令在查找匹配项时出现意外的EOF

bash命令在查找匹配项时出现意外的EOF,bash,Bash,我想创建一个bash文件,在这里我连接到一个docker容器(mysql)并运行一个查询,然后我想将结果输出到一个csv文件中。我所尝试的: #!/bin/bash docker-compose exec db /bin/bash -c 'mysql -u user -ppassword dbname -e "SELECT c.id, c.first_name, c.last_name, c.email, cp.id, cp.name, company.id, company.na

我想创建一个bash文件,在这里我连接到一个docker容器(mysql)并运行一个查询,然后我想将结果输出到一个csv文件中。我所尝试的:

 #!/bin/bash

 docker-compose exec db /bin/bash -c 'mysql -u user -ppassword dbname 
 -e "SELECT c.id, c.first_name, c.last_name, 
 c.email, cp.id, cp.name, company.id, company.name FROM 
 db.candidate c LEFT JOIN db.candidate_position cp ON 
 cp.id = c.candidate_position_id LEFT JOIN db.company company 
 ON company.id = c.company_id INTO OUTFILE \'Result.csv\'"'
错误是我得到:

 line 3: unexpected EOF while looking for matching `"'

不能在单引号中包含
;您需要更改外部引号

docker-compose exec db /bin/bash -c "mysql -u user -ppassword dbname 
 -e \"SELECT c.id, c.first_name, c.last_name, 
 c.email, cp.id, cp.name, company.id, company.name FROM 
 db.candidate c LEFT JOIN db.candidate_position cp ON 
 cp.id = c.candidate_position_id LEFT JOIN db.company company 
 ON company.id = c.company_id INTO OUTFILE 'Result.csv'\""
但是,由于您只运行一个命令,因此不需要
bash-c
;直接运行mysql即可

docker-compose exec db mysql -u user -ppassword dbname \
   -e "SELECT c.id,
              c.first_name,
              c.last_name, 
              c.email,
              cp.id,
              cp.name,
              company.id,
              company.name
       FROM
         db.candidate c
         LEFT JOIN db.candidate_position cp
            ON cp.id = c.candidate_position_id
         LEFT JOIN db.company company
            ON company.id = c.company_id
       INTO OUTFILE 'Result.csv'
      "

\'
不会在
'.
中转义
'
。但是如何转义它呢?但是如果我应用该解决方案,它就不起作用了。使用
bash-c'echo“a'b\'”模拟您的命令会产生相同的错误。使用
bash-c'echo“a'''''b'''''''
按照预期解决并打印
a“b'
。您只运行一个命令;我认为您根本不需要
bash-c