summaryrefslogtreecommitdiff
path: root/examples/scripts.noah/shcat.bash
blob: 5d9e96d084feeff18edc9c15468c938d0d31c4d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# shcat.bash
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1992-07-17
# Last modified: 1993-09-29
# Public domain

# Conversion to bash v2 syntax done by Chet Ramey

# Commentary:
# Code:

#:docstring shcat:
# Usage: shcat {file1} {file2} {...}
#
# Like `cat', only this is all inline bash. 
#:end docstring:

###;;;autoload
function shcat ()
{
 local IFS=""
 local line
 local file
 local exitstat=0
 
    if [ $# -eq 0 ]; then
       while read -r line; do
          echo "${line}"
       done
       return 0
    else
       for file in "$@" ; do
          if [ -r "${file}" ]; then
               while read -r line; do
                  echo "${line}"
               done < "${file}"
          else
             # This will cause the error to be printed on stderr
             < "${file}"
             exitstat=1
          fi
       done
       return ${exitstat}
    fi
}

provide shcat

# shcat.bash ends here