bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: weird problem -- path interpretted/eval'd as numeric expression


From: Linda Walsh
Subject: Re: weird problem -- path interpretted/eval'd as numeric expression
Date: Wed, 27 Mar 2013 12:17:21 -0700
User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.24) Gecko/20100228 Lightning/0.9 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666

Greg Wooledge wrote:
> We would need to see the definition of the "include" function, and the
> contents of the file that it's presumably sourcing or whatever.
> 
Working on packaging, but to answer your immediate questions:

Assuming attachments work, 'include' is in ~/bin

Note, some of these files are "works in progress, so some things
aren't finished...which will be obvious)...

recycle space uses a non-broken version of 'rm' that
really does a depth-first removal of files and doesn't
violate depth-first order for special cases -- but you don't need
that to see this problem (it never gets there and would only
run if you used "-e")

The function is defined in /etc/local/aliases.sh

There are several other files needed for the whole mess -- am working on
putting them in a dir structure that can be packaged...but this
should give you the initial files.  If I forgot any other files
that are  needed right away, I can send those off, but getting close
to needing to take a break, so not sure how long packaging everything
will take...

There are mentions of cygwin in the scripts as I try to maintain
a common set of scripts that runs on either cygwin or linux, but
this script is run on linux.

Thanks for any hints and patience...





#!/bin/bash  
#echo "include:2<include $@ >"

shopt -s expand_aliases
alias dcl=declare
alias 1>&2

dcl -x _SPATH
dcl -xa _FPATH
dcl -xA _INC

function pathof {
        local prog="$1"
        local path
        for path in $(IFS=:;echo $PATH );do
                path="$path/$prog"
                if [[ -f $path && -x $path ]]; then echo "$path"; return 0; fi
        done
        echo "$prog: not found" >&2
}

function _include_h {
#       [[ ${0##*/} == include ]] && { exec "$@" ; }
        [[ $1 ]] || return 1
        dcl fnc="$1"
        [[ $PATH != ${_SPATH:-} ]] && {
                unset _FPATH 
                dcl -xa _FPATH=( $(IFS=:;echo $PATH) )
                unset _SPATH; dcl -x _SPATH="$PATH"
        }

        if [[ ! ${_INC["$fnc"]:-""}  ]]; then 
                for pw in "${_FPATH[@]}"; do 
                        if [[ -r $pw/$fnc ]]; then
                                printf "%s
                                " "source \"$pw/$fnc\""         && 
_INC["$fnc"]="$pw/$fnc" && return 0
                        fi
                done
                echo "ERROR: Missing \"$fnc\" in \$PATH" >&2
                exit 2
        fi
}

export -f _include_h
read alias_def <<'_alias_def_end_'
alias include='eval "$( _include_h "$1")"'
_alias_def_end_
export 
__GLOBAL_ALIASES__="$alias_def${__GLOBAL_ALIASES__:+";$__GLOBAL_ALIASES__"}"


# test if initial include -- if so, restart with aliases defined...
[[ ${0##*/} == include ]] && { exec "$@" ; }
# else include the arg
include "$@"

# vim: ts=2 sw=2
#!/bin/bash -x

#full trace support:
export 
PS4='>>${BASH_SOURCE:+${BASH_SOURCE[0]}}#${LINENO}${FUNCNAME:+(${FUNCNAME[0]})}>
 '

# gvim=:SetNumberAndWidth       #rm 'no' to activate in gvim, '=:' is not error
_prgpth="${0:?}"; _prg="${_prgpth##*/}"; _prgdr="${_prgpth%/$_prg}"
[[ -z $_prgdr || $_prgdr == . || $_prg == $_prgdr ]] && _prgdr="$PWD"
export PATH="$_prgdr:$_prgdr/lib:$PATH"
#printf "prgpth=%s, prg=%s, prgdr=%s\n" "$_prgpth" "$_prg" "$_prgdr"
shopt -s expand_aliases extglob sourcepath xpg_echo; set -o pipefail 
#source {errnos,stdlib}.shlib
echo lib/Util/needroot.shh
include "lib/Util/needroot.shh"




# vim: ts=2 sw=2
Recycle_pat='\.recycle$'

function recycle_bins {
        locate -e /.recycle|grep $Recycle_pat
}
Ls="$(type -P ls)"
function empty_dir {
        local d="$1"
        local -i f="$($Ls -A1 "$1"|wc -l)"
        return $f
}

m1="Space Consumed in Recycle bins:"
m2="Emptying recycle bins..."
m3="Expiring Recycle bins..."

msg="$m1"

declare -i remove=0 quiet=0 expire=0
declare -a args
while [[ $# > 0 ]]; do
        if [[ $1 == "-e" || $1 == "--empty" ]]; then remove=1; msg="$m2"
        elif [[ $1 == "-x" || $1 == "--expire" ]]; then 
                shift && expire=${1:?}; 
                msg="$m3"
        elif [[ $1 == "-q" || $1 == "--quiet" ]]; then quiet=1
        fi
        shift
done


function usage {

        shopt -s xpg_echo
  local -a msg=(
  " recycle_space    --     manage 'recycling space'\n\n"
  "  (no args)      --     display space taken by all recycle bins found\n"
  "  TBD -e         --     empty all recycle bins found\n"
  "  TBD -x <weeks> --     eXpire files older than 'weeks' from bins\n"
  "      -q         --     suppress this message\n\n")
        echo -e "${msg[@]}"

}

#if ((remove || expire >-1)); then
#       printf "option not yet done...\n"
#       exit 0;
#fi

((!quiet)) && usage

printf "%s\n" "$msg"
{
        while read dir ; do
                 empty_dir "$dir"  && continue
                if ((remove)) ; then 
                        ( cd "$dir" && rm --one-file-system -fr .)
                elif ((expire)); then :
                else
                        printf " %4s  %s\n" "$(sudo du -sh "$dir"|cut -f1)" 
"$dir"
                fi
        done < <(recycle_bins)
} | ( ((!(remove||expire))) && hsort -s || cat)

Attachment: aliases.sh
Description: Bourne shell script


reply via email to

[Prev in Thread] Current Thread [Next in Thread]