apernet / hysteria

Hysteria is a powerful, lightning fast and censorship resistant proxy.
https://v2.hysteria.network/
MIT License
14.56k stars 1.62k forks source link

build.sh编译脚本的bug #524

Closed mebest100 closed 1 year ago

mebest100 commented 1 year ago

build.sh第47行 for platform in "${platforms[@]}"; do 这里的${platforms[@]}不应该使用双引号,因为: 加了双引号,整个数组作为字符串输出了,这样就失去了数组的意义!

具体参考:https://www.cnblogs.com/yinguohai/p/11194553.html

所以,这里应该把数组的双引号的去掉,这是一个很严重的错误

haruue commented 1 year ago

??? 都翻出来看 GitHub 了, 建议多实践, 少用 CSDN 。

"${arr[@]}" 是非常常见的数组展开形式, 因为只有这种形式能确保数组里的项目数量不会被项目值中包含的空格所影响。

haruue@tsunoryuu:~ $ arr=(1 "2 3" 4)
haruue@tsunoryuu:~ $ args "${arr[@]}"    # 这个等价于 args "1" "2 3" "4"
argv[0]=args
argv[1]=1
argv[2]=2 3
argv[3]=4
haruue@tsunoryuu:~ $ args ${arr[@]}      # 这个等价于 args 1 2 3 4
argv[0]=args
argv[1]=1
argv[2]=2
argv[3]=3
argv[4]=4
haruue@tsunoryuu:~ $ args "${arr[*]}"    # 这个才是你说的 args "1 2 3 4"
argv[0]=args
argv[1]=1 2 3 4

用到的 args 程序可从 https://github.com/haruue/args/blob/master/src/C.c 编译。

cross-hello commented 1 year ago

CSDN 🤣 At least you should use Stack Overflow or read documents written via authors.


From: Haruue @.> To: apernet/hysteria @.> CC: Subscribed @.**> Date: Dec 8, 2022 18:16:37 Subject: *Re: [apernet/hysteria] build.sh编译脚本的bug (Issue #524)

??? 都翻出来看 GitHub 了, 建议多实践, 少用 CSDN 。

@.***:~ $ args "${arr[@]}"

argv[0]=args

argv[1]=1

argv[2]=2 3

argv[3]=4

@.***:~ $ args ${arr[@]}

argv[0]=args

argv[1]=1

argv[2]=2

argv[3]=3

argv[4]=4

* — Reply to this email directly, view it on GitHub[https://github.com/apernet/hysteria/issues/524#issuecomment-1343126130], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AKGBAYCR7WKUMMEYISR4C3LWMIQYJANCNFSM6AAAAAASYHMVLM]. You are receiving this because you are subscribed to this thread.[Tracking image][https://github.com/notifications/beacon/AKGBAYGE2ZDJJVIBRMBCA5TWMIQYJA5CNFSM6AAAAAASYHMVLOWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTSQBZ5HE.gif]Message ID: @.***>

mritd commented 1 year ago

如果你期望自行编译的话, 也可以安装 go-task 工具, 项目下已经编写了 Taskfile, 可以通过简单的执行 task 命令即可完成编译.

image

你也可以通过指定特定平台进行编译:

image

编译好的文件将会生成在 ./dist 目录中.

mebest100 commented 1 year ago

如果你期望自行编译的话, 也可以安装 go-task 工具, 项目下已经编写了 Taskfile, 可以通过简单的执行 task 命令即可完成编译.

image

你也可以通过指定特定平台进行编译:

image

编译好的文件将会生成在 ./dist 目录中.

只有你真正看懂了我的需求,不像上面那个看都看懂就劈头盖脑的废话一大堆,他看我用了CSDN? 什么脑子! 再说,说的好像他比CSDN强一样的,别搞笑了,就凭他? 我现在就是要编译windows和linux平台的二进制文件,现在需要修改他那蹩脚的编译脚本,我就是要用字符串作为数组怎么了,我就是要用空格做分隔符怎么了,看懂我意思了吗,这种情况遍历数组,你那个蹩脚的脚本偏偏要给数组加个引号,导致脚本无法运行! 这才是问题好吧! 问题都没看懂,还说那么多废话!

haruue commented 1 year ago

我现在就是要编译windows和linux平台的二进制文件,现在需要修改他那蹩脚的编译脚本,我就是要用字符串作为数组怎么了,我就是要用空格做分隔符怎么了,看懂我意思了吗,这种情况遍历数组。

麻烦你翻到页顶, 看看你这 Issue 提的啥。 你一上来就说要把 "${platforms[@]}" 换成 ${platforms[@]} , 还说「这是一个很严重的错误」。 我当然得给你举例解释为啥不能换。

你那个蹩脚的脚本偏偏要给数组加个引号,导致脚本无法运行!

这个脚本我们仓库本身的 GitHub Action 都在用, 编译发布了好几个版本了。 不能运行是你自己的问题。

https://github.com/apernet/hysteria/blob/a95dcf0e394d1d673ccfab2f07c20664802d6a63/.github/workflows/release.yml#L28

如果是你自己改了脚本, 或者用的是不支持的 shell (比如 dash 或者 busybox ash), 然后脚本不能运行了, 你把你的脚本和报错发出来, 我们可以告诉你是哪里出的问题。

然后, 像 "${platforms[@]}" 这种数组加引号的形式, 也是非常常见的用法, 它的作用是把数组里的每一项分别展开成放在引号里的形式, 比如 (1 "2 3" 4) 会展开成 "1" "2 3" "4" , 并不会像你说的, 把整个数组变成字符串。

为啥要提 CSDN , 是因为你发的这个 CSDN 文章, 它举的例子里数组里面套的字符串, 内容也是个数组一样的东西, 这种文章反而让初学者犯迷糊。

这才是问题好吧! 问题都没看懂,还说那么多废话!

你之前有说过你真的想干啥, 遇到了什么报错么? 难不成我回复个 Issue 还得精通心理学, 还是要变成你肚子里的蛔虫, 来猜测你真正想干啥。

mebest100 commented 1 year ago

睁大你的眼睛看看那是CSDN? 明明是博客园好吧,我当然知道那是对接gitaction,你以为我没看过代码。 但是你那语气貌似比Linus Torvalds还牛逼一样。