使用命令替換來執行多個命令

使用命令替換來執行多個命令

我試圖在 bash 中做的是編寫一個腳本,foo當我運行時$(foo),它會更改目錄並使用source.內容foo

echo cd bar
echo "&&"
echo source baz

當我運行時$(foo),它將目錄更改為“bar”,但它不運行source baz。有什麼辦法可以做到這一點嗎?

答案1

您需要eval輸出:

eval $(foo)

否則,&&(或任何其他類似的語言元素)將被視為用引號括起來: 的常規參數cd

$ echo $(foo)
cd bar && source baz

跳過前導echo,這將cd使用四個參數執行bar && source baz,默默地刪除除第一個之外的所有參數。

答案2

您可以使用別名(也可以看看:男人狂歡)做你想做的事。

alias foo='cd bar && source baz'

當您執行 foo 時,會將目錄變更為 bar 和來源 baz。

相關內容