2017-02-28 63 views
1

在下面的例子:bash命令XOR^anothercommand

w^ls 

什麼在外殼XOR運算的預期行爲?

所以,當我們進入

command^anothercommand 

什麼觸發anothercommand運行(如果它會不惜一切執行)?

+1

如果它*是像'&&'或'||'這樣的運算符,它必然會運行這兩個命令,因爲異或的值由它的兩個操作數(它不會短路)決定。如果一個命令失敗並且另一個命令成功,則結果退出狀態將爲0,否則爲1。我無法真正描繪出那些有用的場景。 – chepner

回答

2

如果輸入command^anothercommand,你只是提供command有兩個參數,^anothercommand。這裏沒有運營商。 anothercommand只有在command決定將該參數作爲命令名稱並嘗試運行時纔會運行。

+0

您能否提供一個接受^作爲參數的命令示例? –

1

正如您在man bash中看到的,^不用於分隔命令,它在算術表達式中使用。

$ echo $((5^9)) 
12 

這是因爲

dec  bin 
5  0101 
9  1001 
----------- 
12  1100 
+0

我真的以爲,它會基於命令的退出代碼(每個命令的返回值的異或),基於OP的意圖工作,愚蠢的我! – Inian

+0

好的,但是當我在命令中使用它時,爲什麼bash不會抱怨它? –

+0

它對我有用:'$ id^ls id:額外操作數'ls' 嘗試使用'id --help'獲取更多信息。 ' – choroba