| # This program is free software: you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| # |
| # builtins with exit status inverted |
| |
| ( true ) |
| echo $? |
| ( ! true ) |
| echo $? |
| |
| ( false ) |
| echo $? |
| ( ! false ) |
| echo $? |
| |
| # inverting shouldn't affect exit |
| (exit 42) |
| echo $? |
| |
| ( ! exit 42 ) |
| echo $? |
| |
| # commands requiring an exec with exit status inverted -- broken in bash-2.04 |
| |
| ( ls > /dev/null 2>&1 ) |
| echo $? |
| ( ! ls > /dev/null 2>&1 ) |
| echo $? |
| |
| touch /tmp/notwrite |
| chmod 400 /tmp/notwrite |
| |
| # make sure redirection failures in commands whose exit status is inverted |
| # are handled correctly |
| |
| ( ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| ( ! ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| # now add exit traps, true and false for commands with and without exit |
| # status inversion |
| |
| (trap 'false' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| (trap 'false' 0 ; ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| (trap 'true' 0 ; ! ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| (trap 'true' 0 ; ls > /tmp/notwrite ) 2>/dev/null |
| echo $? |
| |
| rm -f /tmp/notwrite |