在 zsh shell 中,为什么我不能将多个参数传递给位置参数?
In the zsh shell, why can't I pass multiple arguments to a positional parameter?
我最近开始学习 C++。我一直在 zsh shell 中使用 clang 来编译我的代码。
为此,我每次都使用相同的命令,所以我把它做成一个.zsh文件来简化流程。
我文件中的代码是这样的:
clang++ -std=c++17 -stdlib=libc++ -o
它适用于单个 .cpp 文件;也就是说,如果我传递它 file.cpp output
,它就会完全按照我的意愿工作。但是,如果我将多个文件传递给它,clang 会抱怨(它说路径无效)。
如果我键入以下内容,clang 会完全按照我的意愿进行操作,并将多个文件编译成名为“test”的 UNIX 可执行文件。
clang++ multiple.cpp add.cpp input.cpp -std=c++17 -stdlib=libc++ -o test
但是,如果我输入以下内容,它就会抱怨。我也尝试过转义空格,但没有用。
zsh ../comp.zsh 'multiple.cpp add.cpp input.cpp' attempt
我不明白为什么这不起作用并且在其他地方找不到任何答案。我对zsh很陌生
提前致谢!
我想出来了,多亏了 Code-Apprentice and G.M. 说 multiple.cpp add.cpp input.cpp
被作为一个参数传递给 clang++。
我将代码更改为:
clang++ $@[0,-2] -std=c++17 -stdlib=libc++ -o $@[-1]
,这样除了最后一个参数之外的所有参数都作为输入文件单独传递给clang++,最后一个参数作为输出文件传递。
我最近开始学习 C++。我一直在 zsh shell 中使用 clang 来编译我的代码。 为此,我每次都使用相同的命令,所以我把它做成一个.zsh文件来简化流程。
我文件中的代码是这样的:
clang++ -std=c++17 -stdlib=libc++ -o
它适用于单个 .cpp 文件;也就是说,如果我传递它 file.cpp output
,它就会完全按照我的意愿工作。但是,如果我将多个文件传递给它,clang 会抱怨(它说路径无效)。
如果我键入以下内容,clang 会完全按照我的意愿进行操作,并将多个文件编译成名为“test”的 UNIX 可执行文件。
clang++ multiple.cpp add.cpp input.cpp -std=c++17 -stdlib=libc++ -o test
但是,如果我输入以下内容,它就会抱怨。我也尝试过转义空格,但没有用。
zsh ../comp.zsh 'multiple.cpp add.cpp input.cpp' attempt
我不明白为什么这不起作用并且在其他地方找不到任何答案。我对zsh很陌生
提前致谢!
我想出来了,多亏了 Code-Apprentice and G.M. 说 multiple.cpp add.cpp input.cpp
被作为一个参数传递给 clang++。
我将代码更改为:
clang++ $@[0,-2] -std=c++17 -stdlib=libc++ -o $@[-1]
,这样除了最后一个参数之外的所有参数都作为输入文件单独传递给clang++,最后一个参数作为输出文件传递。