X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=appendu-function;h=a169bd7cf680a860116d46928b442b9583baaadb;hb=0a9b2b99289f77d803506dc168b9f69c2c5f7924;hp=7a11f28e909ac3846435f6d121b45cddb7f909bf;hpb=91ceba1b2739bb4d21d3c7887c0aff55f6da129d;p=tee-unique diff --git a/appendu-function b/appendu-function index 7a11f28..a169bd7 100644 --- a/appendu-function +++ b/appendu-function @@ -3,8 +3,10 @@ # This program is under GPL v. 3 or later, see appendu() { - local help="Usage: appendu [OPTION]... FILE LINE... -Append unique. Append each LINE to FILE if it does not exist in FILE. + local help="Usage: appendu [OPTION]... FILE [LINE]... +Append unique. +Append each line to FILE if it does not exist in FILE. +Use LINE if specified, else use lines from stdin. Appended lines are output to the terminal. -s don't try to use sudo when it would help us read or write the file @@ -28,8 +30,8 @@ Appended lines are output to the terminal. fi done - if (( ${#@} < 2 )); then - echo "error: need 2 or more arguments" + if [[ ${#@} == 0 ]]; then + echo "error: need 1 or more arguments" echo "$help" return 1 fi @@ -54,7 +56,15 @@ Appended lines are output to the terminal. readsudo= writesudo= fi - for x in "$@"; do - [[ -e "$file" ]] && $readsudo grep -q "^$x$" "$file" || $writesudo tee -a "$file"<<<"$x" - done + if (( $# )); then + for x in "$@"; do + [[ -e "$file" ]] && $readsudo grep -q "^$x$" "$file" || $writesudo tee -a "$file"<<<"$x" + done + elif [[ ! -t 0 ]]; then + unset IFS + while read -r x; do + # duplicated from above + [[ -e "$file" ]] && $readsudo grep -q "^$x$" "$file" || $writesudo tee -a "$file"<<<"$x" + done + fi }