我有不同的命令组成的文本文件时,未找到:庆典 - 命令解析与命令的文本文件
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