X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=appendu;h=1d9388e8840b580327d6ae4bc8ff41ef1344602f;hb=0a9b2b99289f77d803506dc168b9f69c2c5f7924;hp=f08a45c13a6248d3becbc2e5782e380163cfb469;hpb=91ceba1b2739bb4d21d3c7887c0aff55f6da129d;p=tee-unique diff --git a/appendu b/appendu index f08a45c..1d9388e 100755 --- a/appendu +++ b/appendu @@ -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,8 +56,16 @@ 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 } appendu "$@"