| # 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/>. |
| # |
| binfalse() |
| { |
| $binfalse || return 1 # normalize return value |
| } |
| |
| if [ -x /usr/bin/true ]; then |
| bintrue=/usr/bin/true |
| elif [ -x /bin/true ]; then |
| bintrue=/bin/true |
| else |
| bintrue=true |
| fi |
| if [ -x /usr/bin/false ]; then |
| binfalse=/usr/bin/false |
| elif [ -x /bin/false ]; then |
| binfalse=/bin/false |
| else |
| binfalse=false |
| fi |
| |
| shopt -s lastpipe |
| |
| unset foo bar |
| echo a b c | read foo |
| echo after 1: foo = $foo |
| |
| unset tot |
| declare -i tot |
| printf "%d\n" 1 2 3 | while read foo; do tot+=$foo; done |
| echo after 2: tot = $tot |
| |
| unset bar |
| echo g h i | bar=7 |
| echo after: $bar |
| |
| unset foo last |
| printf "%s\n" a b c | while read foo; do last=$foo; done |
| echo last = $last |
| |
| exit 142 | false |
| echo $? -- ${PIPESTATUS[@]} |
| |
| true | false | $bintrue |
| echo $? -- ${PIPESTATUS[@]} |
| |
| true | $bintrue | false |
| echo $? -- ${PIPESTATUS[@]} |
| |
| set -o pipefail |
| true | $bintrue | false |
| echo $? -- ${PIPESTATUS[@]} |
| |
| true | binfalse | true |
| echo $? -- ${PIPESTATUS[@]} |
| set +o pipefail |
| |
| ${THIS_SH} ./lastpipe1.sub |
| echo lastpipe1.sub returns $? |
| |
| ${THIS_SH} ./lastpipe2.sub |
| ${THIS_SH} ./lastpipe3.sub |