所以我想弄清楚這個奇怪的行爲。用雙引號執行Linux命令
$ hello hello
-ksh: hello: not found [No such file or directory]
$ "hello hello"
-ksh: hello hello: not found [No such file or directory]
$ echo hello hello
hello hello
$ `echo hello hello`
-ksh: hello: not found [No such file or directory]
$ echo \"hello hello\"
"hello hello"
$ `echo \"hello hello\"`
-ksh: "hello: not found [No such file or directory]
第2和第6條命令與我的問題最相關。如果我運行第二個命令"hello hello"
,那麼它將評估這是一個大的參數。但是,如果我嘗試運行最後一條命令,那麼它應該具有相同的行爲嗎?
`echo \"hello hello\"`
那麼它應該具有相同的行爲?但它看到"hello
作爲它自己的獨立詞彙。有人可以解釋這一點,以及如何讓第六條命令像第二條命令一樣工作,從而將「hello hello」評估爲一個整體陳述?
(這有一個更實際的應用,但這是我可以生產的最小的例子)。
預先感謝您!
編輯:我看到我得到了一個downvote,所以我會更具體地說明我遇到了什麼問題。
rcli4 6379 keys AAA* | sed -e "s/.*/'&'/" | while read line; do rcli4 6379 get $line; done
注意rcli4
只是爲redis-cli -p
的別名。我不斷收到
(error) ERR wrong number of arguments for 'get' command
這是由於引號被錯誤地解析。我嘗試過不同的組合,比如添加更多引號,刪除sed語句等,但是我認爲能夠解決我最初的問候問題會給我足夠的關於如何解決我的具體問題的見解。
'ksh'不是'bash',你可能需要修復你的標籤或你的shell –
在一個帶引號的字符串中,一個引號只是另一個字符。它沒有特殊的力量。 – John1024
@EricRenouf哎呀!謝謝 –