Ich habe ein csh-Skript, das mit "source" ausgeführt wird, und übergibt alle Argumente an ein Programm:
%Vor% Wenn ich source foo.csh a b c
starte, ist alles in Ordnung. Aber nicht immer:
foo "a b" "c d"
:
Ich erwarte, dass bar
zwei Argumente erhält - a b
und c d
. Stattdessen wird es 4.
foo a "*" b
:
Das *
wird zu einer Liste von Dateien erweitert. Ich möchte nur das Zeichen *
.
Extra Credit - foo a * b
sollte genauso funktionieren. Ich weiß, es ist problematischer und ich bin bereit, ohne es zu leben.
Eine Sache, die ich ausprobiert habe, ist ./bar $*
in ./bar "$*"
zu ändern. Dies hilft mit dem Stern, aber jetzt bar
bekommt immer alles in einem einzigen Parameter.
Anmerkungen:
Unsere Firma verwendet csh als Login-Shell, also muss ich sie verwenden, wenn Sie source
verwenden. Zu wissen, dass csh-Programmierung als schädlich angesehen wird , habe ich alle Logik in bar
und implementiert hat das absolute Minimum im Skript gelassen.
Wenn Sie vorschlagen, den Alias neu zu definieren, ist es wichtig zu sehen, dass die Umleitung immer noch funktioniert ( foo | grep hello
) und dass es eine saubere Säuberung gibt, wenn ctrl-C das Skript bricht.
Danke.