Mam csh skrypt, który jest wykonywany przy użyciu „źródło” i przekazuje wszystkie swoje argumenty do programu:przekazywać argumenty z csh zaprogramować, dokładnie tak, jak są one
% alias foo source foo.csh
% cat foo.csh
./bar $*
# Some uninteresting stuff
Jeśli biegnę source foo.csh a b c
wszystko jest OK. Ale nie zawsze:
foo "a b" "c d"
:
Spodziewambar
dostać dwa argumenty -a b
ic d
. Zamiast tego otrzymuje 4.foo a "*" b
: Numer*
jest rozszerzony do listy plików. Chcę tylko postać*
.
Dodatkowy kredyt -foo a * b
powinien działać w ten sam sposób. Wiem, że to bardziej problematyczne i jestem gotów żyć bez tego.
Jedno Starałem się zmienia ./bar $*
do ./bar "$*"
. Pomaga to z gwiazdką, ale teraz bar
zawsze dostaje wszystko w jednym parametrze.
Uwagi:
Nasza firma korzysta csh jako powłoki logowania, więc muszę go używać podczas korzystania
source
. Wiedząc, że csh programming is considered harmful, zaimplementowałem całą logikę wbar
i zostawiłem minimum w skrypcie.Jeśli sugerujemy redefinicji alias, ważne jest, aby zobaczyć, że przekierowanie nadal działa (
foo | grep hello
), i że nie wypada porządki czy Ctrl-C przerywa skryptu.
Dzięki.