首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致此错误的原因:没有这样的文件或目录。

问导致此错误的原因:没有这样的文件或目录。
EN

Stack Overflow用户
提问于 2013-09-26 21:38:56
回答 3查看 2.7K关注 0票数 2

我有一个名为database.php的文件。在该文件中:

代码语言:javascript
复制
database_useranme = "ferdinel";
database_sixtysec = "ferdinel_db";

现在,我创建了一个脚本来获取数据库'ferdinel_db',下面是我的脚本:

代码语言:javascript
复制
#!/bin/bash

#To get the line that has a "database_sixtysec ="
getdb=`grep "database_sixtysec =" < /www/vhost/database.php`

# To verify Output what's inside in get_db
echo "$getdb"   

# This one is to get the ferdinel_db
databaseName=`echo ${getdb#*\"} | tr -d '"; '`         

#Below is to count the file if exist in $databaseName variable (ferdinel_db)
countFlag=`ls /var/lib/mysql/$databaseName | grep 'sixty_options.frm\|site_settings.frm' | wc -l` 

#Ouput Either 0 , 1 or 2
echo $countFlag

然后,我使用chmod +x与chown root:root脚本。

现在,当我尝试运行它时,输出是:

代码语言:javascript
复制
$database_sixtysec = "ferdinel_db";
: No such file or directory_db
0

我希望有2,因为当我在/var/lib/mysql/ferdinel_db/中手动查看时,有sixty_options.frm和site_settings.frm。

我在-x的末尾添加了#!/bin/bash,这是什么输出:

代码语言:javascript
复制
' getdb='$database_sixtysec = "ferdinel_db";
'+ echo 'ferdinel_db";
++ tr -d '"; '
+ databaseName=$'ferdinel_db\r'
' echo '$database_sixtysec = "ferdinel_db";
$database_sixtysec = "ferdinel_db";
++ ls $'/var/lib/mysql/ferdinel_db\r'
++ grep 'sixty_options.frm\|site_settings.frm'
++ wc -l
: No such file or directorycssv25_db

在数据库的末尾有类似于\r的东西

EN

回答 3

Stack Overflow用户

发布于 2013-09-26 21:42:54

你的剧本有CRLF的结尾。尝试用dos2unix或编辑器中的设置修复它。

票数 5
EN

Stack Overflow用户

发布于 2013-09-26 21:48:53

将脚本的顶部行更改为:

代码语言:javascript
复制
#!/bin/bash -x

然后运行它。这将使您更好地了解脚本中正在发生的事情。

票数 1
EN

Stack Overflow用户

发布于 2013-09-27 15:06:58

我只是想清楚了!

首先,为了真正发生什么,我在-x的末尾添加了#!/bin/bash。

#!/bin/bash -x

当我运行它时,您可以查看所有的进程,这是输出:

代码语言:javascript
复制
' getdb='$database_sixtysec = "ferdinel_db";
'+ echo 'ferdinel_db";
++ tr -d '"; '
+ databaseName=$'ferdinel_db\r'
' echo '$database_sixtysec = "ferdinel_db";
$database_sixtysec = "ferdinel_db";
++ ls $'/var/lib/mysql/ferdinel_db\r'
++ grep 'sixty_options.frm\|site_settings.frm'
++ wc -l
: No such file or directorycssv25_db

我在+ databaseName=$'ferdinel_db\r'的末尾看到\r。对此进行研究,这就是我们所称的Windows回车返回,因为该文件是在windows中编辑的。

因此,为了消除\r在ferdinel_db末尾,我在tr -d '"; '中添加了\r

代码语言:javascript
复制
databaseName=`echo ${getdb#*\"} | tr -d '"; \r'`

这解决了我的问题。感谢你的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19039180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档