簡體   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