我有一个csh脚本,使用"source"执行,并将其所有参数传递给程序:
% alias foo source foo.csh
% cat foo.csh
./bar $*
# Some uninteresting stuff
Run Code Online (Sandbox Code Playgroud)
如果我跑source foo.csh a b c,一切都好.但不总是:
foo "a b" "c d":
我希望bar得到两个论点 - a b和c d.相反,它得到4.
foo a "*" b:它*被扩展为文件列表.我只想要这个角色*.
额外的功劳 - foo a * b应该以同样的方式工作.我知道这更有问题,我愿意没有它.
有一件事我试着在改变./bar $*到./bar "$*".这有助于星号,但现在bar总是在一个参数中获取所有内容.
笔记:
我们公司使用csh作为登录shell,所以我必须在使用时使用它source.知道csh编程被认为是有害的,我实现了所有逻辑bar并在脚本中保留了最低限度.
如果你建议重新定义别名,重要的是看到重定向仍然有效(foo | grep hello),并且如果ctrl-C破坏了脚本,那么正确清理.
谢谢.
ugo*_*ren 18
同时,我自己找到了答案:
./bar $argv:q
该:q修改需要照顾的事情.它传递给bar完全相同的参数foo.
资料来源:http://www.staff.tugraz.at/reinfried.o.peter/unix/cshell.html
| 归档时间: |
|
| 查看次数: |
8375 次 |
| 最近记录: |