[英]Bash Script - Need find command to output file paths enclosed in double quotes without line breaks
[英]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
变量中列出的目录,直到找到具有该名称的命令为止。 如果不存在,则会显示未找到错误消息命令 。
如果你输入一个命令,它至少包含一个斜杠-例如./foo
或foo/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.