小编ras*_*hok的帖子

Bash 函数局部数组变量在被调用的地方不可访问

有一个 2 bash 脚本文件。b.sh下面提到第一个文件。

#!/bin/bash
declare -a arr1=()
func() {
    var_a=12
    arr1[0]=20
    arr1[1]=30
    declare -a arr2=()
    arr2[0]=40
    arr2[1]=50
}
Run Code Online (Sandbox Code Playgroud)

a.sh下面提到了第二个文件。

#!/bin/bash
source b.sh
func
echo $var_a
echo ${arr1[1]}
echo ${arr2[1]}
Run Code Online (Sandbox Code Playgroud)

输出是

12
30
Run Code Online (Sandbox Code Playgroud)

我的疑问是,为什么本地数组变量 ( arr2) infunca.sh. 但是局部变量var_a是可以访问的。

linux bash shell

2
推荐指数
1
解决办法
399
查看次数

如何在ant脚本中显示quote(")符号

我的蚂蚁脚本是,

<target name="temp">
    <property name="argument" value="xyz abc"/>
    <echo message=" & quot;${argument}& quot;"/>
</target>
Run Code Online (Sandbox Code Playgroud)

输出是

xyz abc
Run Code Online (Sandbox Code Playgroud)

预期产出是

"xyz abc"
Run Code Online (Sandbox Code Playgroud)

如何获得预期的输出.我试过这样&quot;quot;${argument}&quot;quot;,这也行不通.

注意:我antcontrib在Windows 7中使用ant 1.8.2 .

ant quotes scripting escaping properties

1
推荐指数
1
解决办法
5329
查看次数

getchar的意外行为

只是学习C编程,坚持我确定的Do/While循环是微不足道的.我有一段代码需要用户点击'E'退出程序:

char exitletter;

do {
printf ("Please hit E to exit the Program\n");
exitletter = getchar();
} while (exitletter !='E');
Run Code Online (Sandbox Code Playgroud)

但是,如果用户输入了错误的字符,则会打印两次"请按E退出程序".如果用户输入say abcd,则会打印消息五次.

有人可以解释一下这里发生了什么吗?

c getchar do-while

1
推荐指数
1
解决办法
218
查看次数

UDP非阻塞写入失败

我曾在非阻塞TCP中工作,因为在非阻塞情况下,读取和写入都会失败.如果没有可用数据,TCP非阻塞读取可能会失败,如果对等端的TCP缓冲区已满,TCP写入可能会失败(我希望TCP缓冲区大小为64K).

同样,recvfrom如果没有可用数据,UDP read()可能会失败.但UDP write(sendto)的失败案例是什么?我认为在UDP写入中不会出现任何非块错误.因为TCP写入发送数据并等待来自另一方的ACK.但这不是UDP写入的情况,它只会发送并且出来并且它不会等待来自对等方的任何ACK.如果它不发送到另一方意味着它的丢包.

我对UDP非阻塞写的理解是否正确?请解释 ?

c sockets udp network-programming nonblocking

1
推荐指数
1
解决办法
3742
查看次数

gcc 编译器忽略调试构建的未初始化变量警告

gcc编译器忽略uninitialized variable warning调试构建。这对我来说看起来很奇怪,有人可以帮助我理解这一点吗?

\n\n
## Program  \n#include <stdio.h>\n#include <stdarg.h>\n#include <stdlib.h>\n\nint main(int argc, char *argv[])\n{\n    int i, max;\n    int count;\n    if (argc < 2) {\n        return -1;\n    }\n    max = atoi(argv[1]);\n    for (i = 0; i < max; i++) {\n        count++;\n    }\n    printf("count is %d\\n", count);\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

gcc ac -g -Wall -Werror

\n\n

无警告

\n\n

gcc ac -O3 -Wall -Werror

\n\n
a.c: In function \xe2\x80\x98main\xe2\x80\x99:\na.c:8:9: error: \xe2\x80\x98count\xe2\x80\x99 may be used uninitialized in this function [-Werror=maybe-uninitialized]\n     int …
Run Code Online (Sandbox Code Playgroud)

c gcc gcc-warning

1
推荐指数
1
解决办法
866
查看次数