要获取管道命令返回的代码,而不使用bash的PIPESTATUS变量,可以使用以下方法:
#!/bin/sh
(command1 | command2 | command3)
exit_code=$?
echo "Exit code: $exit_code"
在这个示例中,将多个命令包装在小括号中,创建一个子shell。然后通过保存子shell的退出代码来获取管道命令的返回代码。
#!/bin/sh
exit_code=$(command1 | command2 | command3; echo $?)
echo "Exit code: $exit_code"
在这个示例中,使用命令替换$(command1 | command2 | command3; echo $?)
来获取最后一个命令的退出代码,并将其保存在变量exit_code
中。
#!/bin/sh
temp_file=$(mktemp)
command1 | command2 | command3 > $temp_file
exit_code=$(cat $temp_file)
rm $temp_file
echo "Exit code: $exit_code"
在这个示例中,将管道命令的输出重定向到一个临时文件中。然后通过读取临时文件中的内容来获取管道命令的返回代码,并最后删除临时文件。
注意:以上示例中的command1,command2和command3是占位符,代表你实际要执行的命令。你需要将其替换为你自己的命令。