我有一个csh脚本,它使用“源”执行,并将其所有parameter passing给一个程序:
% alias foo source foo.csh % cat foo.csh ./bar $* # Some uninteresting stuff
如果我运行source foo.csh abc ,一切正常。 但不总是:
foo "ab" "cd" :
我希望bar得到两个参数 – ab和cd 。 相反,它得到4。
foo a "*" b : *被扩展为文件列表。 我只想要字符* 。
额外的信贷 – foo a * b应该以同样的方式工作。 我知道这是更多的问题,我愿意没有它的生活。
在.cshrc中设置PATH不起作用
移动30分钟的文件
Shell hacking:从csh启动bash
C Shell运算符
类似Matlab的命令历史在csh中完成
我试过的一件事是改变./bar $*到./bar "$*" 。 这有助于星号,但现在bar总是将所有内容都放在一个参数中。
笔记:
我们公司使用csh作为loginshell,因此在使用source时必须使用它。 知道csh编程被认为是有害的 ,我在bar实现了所有的逻辑,并在脚本中保持最低限度。
如果您build议重新定义别名,重要的是要看到redirect仍然有效( foo | grep hello ),并且如果ctrl-C中断了脚本,则会进行正确的清理。
谢谢。
如何检查在csh脚本中的任何文件的存在?
将rlogin命令转换为别名
variables的variables
如何在shell脚本中使用并行执行?
同时,我自己也找到了答案:
./bar $argv:q
:q修饰符处理事情。 它通过bar完全相同的参数。
资料来源: http : //www.staff.tugraz.at/reinfried.o.peter/unix/cshell.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。