繁体   English   中英

bash命令行中用双引号引起来的字符串cmd

[英]The string cmd enclosed by double quotes in bash commandline

我是bash的初学者。 我遇到这样的问题:

   $ "make -p"  

当我在bash命令行中输入以上内容时,没有任何反应,没有错误,没有结果msg。

我在许多网站中搜索了bash的双引号语法。 所有这些材料给出了类似的解释,如下所示:
https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
并给出如下示例:

echo "argument"  

我找不到类似"echo argument"东西。 而且,我发现bash命令行和bash脚本之间有一个奇怪的区别。

如果我在命令行中键入了不存在的命令:

$ "holy shit"
$ "look that"

什么也没发生 但是,如果我在bash脚本中键入它:

#!/bin/bash  
"holy shit"  
"look that"  

并执行以下脚本,将抛出错误消息:

$ ./myshell   
./myshell: line 2: holy shit: command not found  
./myshell: line 3: look that: command not found

当双引号将整个命令括起来时,是否可以帮助详细解释双引号的作用?
为什么命令行中没有输出? 为什么命令行和脚本之间有区别?

双引号表示它是一个字符串。 您可以执行以下操作:

echo "Hello everybody"

在命令行或shell中。 有时当人们用引号引起来 您应该用自己的变量替换引号(删除引号),有时人们会在您应该键入的整个命令周围加上引号,以显示您应该键入的内容。 对于您的“ make -p”示例,只需键入不带引号的名称,即可在命令行和脚本中使用。

如果输入命令foo ,则外壳程序将搜索PATH变量中列出的目录,直到找到具有该名称的命令为止。 如果不存在,则会显示未找到错误消息命令

如果你输入一个命令,它至少包含一个斜杠-例如./foofoo/bar - ,外壳不会搜索路径,但假定你已经输入了正确的路径,你的命令。 如果不存在,则会出现错误消息No such file or directory

就你而言

 "cd home"

在您的PATH某处搜索名称为cd home的文件,但是没有该名称的文件,并且您找不到命令 如果输入

"cd /home"

Shell绕过PATH搜索,并假定当前目录中存在一个名为cd的目录(即3个字母c,d,space),在其下是一个名为xhome的文件,并设置了x位。 您的系统上没有这样的文件(也没有这样的目录),并且您收到错误消息No such file or directory

如果您想尝试一下,可以尝试以下方法:

mydir="cd "
mkdir "$mydir"
echo "echo Hello Stranger" >"$mydir/home"
chmod +x "$mydir/home"
"cd /home"

这应该打印Hello Stranger 请注意,在分配给mydir的过程中cd和右引号之间必须有一个空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM