小编Ada*_*ran的帖子

鱼壳.如何检查变量是否设置/空?

我该怎么办呢

set variable (some_command_that_may_return_a_string)
if [ variable is set ]
    do_something
Run Code Online (Sandbox Code Playgroud)

反过来如何检查变量是否为空?

shell fish

23
推荐指数
3
解决办法
6077
查看次数

鱼壳:如何将元素附加到数组

我正在尝试将一个元素附加到一个数组中。

我试过的是:

 for i in (seq 10)
            set children $children $line[$i]
 end
Run Code Online (Sandbox Code Playgroud)

但这不会添加新元素。它创建一个包含所有子项的单个变量,然后是一个空格和 $line[$i]。

fish

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

我可以使用我的标题的精简版本包含在库中吗?

我的意思是我真正的头文件看起来像这样:

#include "some_internal_class.h"

class MyLibrary {
    Type private_member;

    void private_function();
public:

    MyLibrary();
    void function_to_be_called_by_library_users();
};
Run Code Online (Sandbox Code Playgroud)

现在我想生成一个包含所有必要定义的动态库.我想用它来发送一个标题,而不是发送我库中的每一个标题.

所以我想我可以像这样创建一个瘦小版本的标题:

class MyLibrary {
public:     
    MyLibrary();
    void function_to_be_called_by_library_users();
};
Run Code Online (Sandbox Code Playgroud)

标题只是声明无论如何正确吗?它们永远不会传递给编译器.我已经宣布了用户将使用的内容.

那可能吗?如果没有,为什么不呢?

c++ oop

6
推荐指数
2
解决办法
130
查看次数

有符号和无符号之间的比较。static_cast 是唯一的解决方案吗?

我使用第三方容器int来存储大小。我还使用 stl 容器size_t来存储大小。

我经常在我的代码中必须在同一个循环中使用两者,例如:

// vec is std::vector
// list is the third party container
assert(vec.size() == list.size()); // warning
for(size_t i = 0; i < vec.size(); i++)
{
    vec[i] = list[i]; // warning
}
Run Code Online (Sandbox Code Playgroud)

因此,为了解决这个问题,我必须要么进行函数风格转换,有人告诉我这是变相的 C 风格转换。

// vec is std::vector
// list is the third party container
assert(int(vec.size()) == list.size());
for(size_t i = 0; i < vec.size(); i++)
{
    vec[i] = list[int(i)];
}
Run Code Online (Sandbox Code Playgroud)

或者我可以采用每个人都推荐的更丑陋的解决方案。静态铸造。

// vec is std::vector
// list is the third party …
Run Code Online (Sandbox Code Playgroud)

c++ static-cast implicit-conversion c++11

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

如何在鱼壳中获得数组大小?

有没有办法在鱼壳中获得数组大小?

我手头的确切问题是我想对除第一个之外的所有数组元素进行一些操作.所以我试图找到大小,以便我可以从2循环到$ array_size.

如果不可能,那么另一种方法是什么?

fish

4
推荐指数
2
解决办法
1030
查看次数

在脚本中定义新的fish命令并解析参数

快问。是否可以通过在 Fish 中编写脚本来定义新命令?我想按照以下方式编写一个新命令:

newFunction --flag1 flag1Input --flag2 flag2Input then space delimited arguments
Run Code Online (Sandbox Code Playgroud)

这个新函数只能以函数的方式使用已经定义的命令,我只是希望能够将标志传递给这个新函数。这可能吗,还是我必须使用另一种语言(例如 Python)来为我的假设命令创建可执行文件?

fish

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

fish shell如何将变量标记化为列表

其他人抱怨鱼总是将变量分成列表,这很奇怪.但对我而言,它只是将多行变量作为单个字符串.

我正在尝试编写一个nautilus脚本.nautilus应设置一个变量,调用$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS所选文件用换行符分隔.

我正试图将它们作为一个列表,用鱼来循环它们.但它们只是表现为单一元素.

set -l files $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

for i in (seq (count $files))
   echo (count $files) >> koko
end
Run Code Online (Sandbox Code Playgroud)

并且文件koko现在显示数字1.

shell nautilus fish

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

鱼壳中的for循环最多只能进行3次

我正在用鱼壳做一个简单的for循环。由于某种原因,它仅迭代3次,而不是100次(或我在其中输入的任何内容)。我究竟做错了什么?

error ?  for i in seq 1 100
             echo hi
         end
hi
hi
hi
error ? 
Run Code Online (Sandbox Code Playgroud)

请注意,运行seq 1 100将按预期输出1到100的数字。

这是我的鱼的版本:

error ?  fish --version
fish, version 3.0.2
Run Code Online (Sandbox Code Playgroud)

fish

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

为什么分配十六进制值会在小端机器上给出大端等效值?

这是一个简单的c语句:

uint32_t x = 0x04000000;
Run Code Online (Sandbox Code Playgroud)

在我的小端机器上,我假设 x 等于 4。但实际上它是 67108864。

所以一定有一些非常基本的东西我不明白。您能帮忙解释一下吗?

c endianness

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

标签 统计

fish ×6

c++ ×2

shell ×2

c ×1

c++11 ×1

endianness ×1

implicit-conversion ×1

nautilus ×1

oop ×1

static-cast ×1