2013-06-09 18 views
8

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:

  1. foo "a b" "c d":
    Spodziewam bar dostać dwa argumenty - a b i c d. Zamiast tego otrzymuje 4.

  2. 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:

  1. 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ę w bar i zostawiłem minimum w skrypcie.

  2. 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.

Odpowiedz

Powiązane problemy