[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: weird problem -- path interpretted/eval'd as numeric expression
From: |
John Kearney |
Subject: |
Re: weird problem -- path interpretted/eval'd as numeric expression |
Date: |
Fri, 29 Mar 2013 19:47:04 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130307 Thunderbird/17.0.4 |
Am 29.03.2013 18:53, schrieb Linda Walsh:
>
> Greg Wooledge wrote:
>> On Fri, Mar 29, 2013 at 12:41:46AM -0700, Linda Walsh wrote:
>>> include was designed to search the path for functions that
>>> are relative paths. While the normal sourcepath allows searching for
>>> filenames on the search path, I don't believe (please correct if I am wrong
>>> and this works now, as it would make life much simpler) that the PATH will
>>> be searched if you give it something like:
>>>
>>> source lib/Util/sourcefile.shh
>> Is that all you want? Here:
>>
>> include() {
>> local paths dir
>> IFS=: read -ra paths <<< "$PATH"
>> for dir in "${paths[@]}"; do
>> if [[ -r $dir/$1 ]]; then
>> source "$dir/$1"
>> return
>> fi
>> done
>> echo "could not find '$1' in PATH" >&2
>> return 1
>> }
> ------
> It also doesn't keep track of the previously sourced files so as to
> not 're-source' them if one of the files you 'source' also sources a file.
>
> It also allows one to optionally leave off the extension, but other than
> those additions... yeah... that's close...
>
> The idea is *mainly* to be able to read in functions and aliases..
>
> Vars expected to 'survive' for those funcs or aliases are exported...but
> that may not be enough to get them out of the local context...not sure.
>
Like this then ?
unset INCLUDED ;
declare -A INCLUDED
find_file() {
local dir
FOUND_FILE=""
[ $((INCLUDED[${1%.sh}]+=1)) -eq 1 ] || return 1
while IFS= read -rd ':' dir ;do
#echo "trying : ${dir}/${1%.sh}.sh"
[[ -r ${dir}/${1%.sh}.sh ]] || continue
FOUND_FILE="${dir}/${1%.sh}.sh"
echo "found : ${FOUND_FILE}"
done <<< "${PATH}"
[ -n "${FOUND_FILE:-}" ] || echo "could not find '$1' in PATH" >&2
return ${FOUND_FILE+1}
} && echo 'find_file "${1:?Missing File Name }" && source "${FOUND_FILE}"'
>/tmp/source_wrapper.sh && alias include=source\ "/tmp/source_wrapper.sh"
I actually tested this one and it seems to work ok.
- Re: weird problem -- path interpretted/eval'd as numeric expression, (continued)
- Re: weird problem -- path interpretted/eval'd as numeric expression, John Kearney, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, Greg Wooledge, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, John Kearney, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, Pierre Gaston, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, John Kearney, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, Greg Wooledge, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, John Kearney, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, John Kearney, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression, Chet Ramey, 2013/03/30
- Re: weird problem -- path interpretted/eval'd as numeric expression, Linda Walsh, 2013/03/29
- Re: weird problem -- path interpretted/eval'd as numeric expression,
John Kearney <=
- Re: weird problem -- path interpretted/eval'd as numeric expression, Linda Walsh, 2013/03/29