我有不同的命令組成的文本文件時,未找到:慶典 - 命令解析與命令的文本文件
set +e; false; echo $?
(false; echo foo); echo \ $?
for i in .; do (false; echo foo); echo \ 1:$?; done; echo \ 2:$?
等。
我想在整個bash子進程中使用set -e
一行一行地測試這些命令,然後檢查父bash進程中的錯誤代碼以查看該子進程是否退出並顯示錯誤。我被困在如何處理更簡單的命令(例如上面列出的第一個命令)。這是我最近的嘗試之一:
mapfile file < "$dir"/errorData
bash -c "${file[0]}"
echo $?
回報
bash: set +e: command not found
bash: false: command not found
bash: echo 127: command not found
我試過幾個變種沒有運氣。使用bash -c \'"${file[1]}"\'
會導致發現一條關於未找到命令的錯誤消息,現在將上述三個字符串合併爲一個長字符串。當然,只需用強引號將文件命令打包並直接在交互式shell中將它們提供給bash
即可。
編輯:我使用的是bash 4.4.12(1)
我不能在Bash v4.3.48上重現這些錯誤。一切正常。 – randomir
您確定要執行(-c)「$ {file [0]}」嗎?或者您是否想要執行該操作? 「$ {file [0]}」? – yacc
@yacc沒有-c,命令失敗,因爲bash正在等待文件或目錄。 – LumpyGrads