当尝试检查 bash 中是否设置或取消设置变量时,我发现了 bash 条件表达式:(-v此处:如果设置了 shell 变量(已分配值),则为 True。)。我尝试代码:
#!/bin/bash
VAR="not-empty"
if [ ! -v "$VAR" ]; then
echo "unset"
else
echo "set: $VAR"
fi
Run Code Online (Sandbox Code Playgroud)
但是,输出甚至是在代码开头unset分配的。VAR
我发现如何检查 Bash 中是否设置了变量?问题,并尝试替换! -v为-z检查字符串变量VAR。输出是set: non-empty.
任何人都可以帮助解释第一种情况(使用-v表达式)为什么输出是unset?
我的 bash 版本:
GNU bash,版本 5.0.17(1)-release (x86_64-pc-linux-gnu) 版权所有 (C) 2019 Free Software Foundation, Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu.org/licenses /gpl.html
如果这可能是一个愚蠢的问题,我很抱歉。上次我朋友跟我说,我for loop在嵌入式系统上开发的时候应该在外面声明迭代器变量,例如:
int i = 0;
for (i = 0; i < 10; i++) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
不应该使用如下:
for (int i = 0; i < 10; i++) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我问他为什么,但他只是说“这是小费”。有人可以给我一些解释吗?
我有下面的短代码(一个用于初始化 for 循环内的迭代器变量,一个用于 for 循环外)。你能告诉我什么更好吗?
int i = 0;
for (i = 0; i < 10; i++) {
// Do something
}
for (i = 0; i < 100,; i++) {
// Do something
}
// Do something, but don't need to use …Run Code Online (Sandbox Code Playgroud)