小编Hit*_*iri的帖子

Bash 条件表达式 (-v) 检查变量是否已设置

当尝试检查 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

linux bash conditional-operator

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

在 C 中的 for 循环中初始化迭代器变量

如果这可能是一个愚蠢的问题,我很抱歉。上次我朋友跟我说,我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)

c

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

标签 统计

bash ×1

c ×1

conditional-operator ×1

linux ×1