gpt4 book ai didi

linux - 将参数从 csh 传递给程序,完全按原样传递

转载 作者:IT王子 更新时间:2023-10-29 00:10:12 25 4
gpt4 key购买 nike

我有一个 csh 脚本,它使用“source”执行,并将其所有参数传递给程序:

% alias foo source foo.csh
% cat foo.csh
./bar $*
# Some uninteresting stuff

如果我运行 source foo.csh a b c,一切正常。但并不总是:

  1. foo "a b""c d":
    我希望 bar 得到两个参数 - a bc d。相反,它得到 4。

  2. foo a "*"b:* 扩展为文件列表。我只想要字符 *
    加分 - foo a * b 应该以同样的方式工作。我知道它的问题更多,我愿意没有它生活。

我尝试的一件事是将 ./bar $* 更改为 ./bar "$*"。这有助于星号,但现在 bar 总是在一个参数中获取所有内容。

注意事项:

  1. 我们公司使用csh作为登录shell,所以我在使用source的时候一定要用它。知道csh programming is considered harmful ,我在 bar 中实现了所有逻辑,并在脚本中保留了最低限度。

  2. 如果您建议重新定义别名,重要的是要看到重定向仍然有效(foo | grep hello),并且在 ctrl-C 中断脚本时进行适当的清理。

最佳答案

与此同时,我自己找到了答案:

./bar $argv:q

:q 修饰符会处理一些事情。它将 bar 传递给 foo 得到的完全相同的参数。

来源:http://www.staff.tugraz.at/reinfried.o.peter/unix/cshell.html

关于linux - 将参数从 csh 传递给程序,完全按原样传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com