![](/img/trans.png)
[英]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.