gpt4 book ai didi

bash - 如何在 bash 中将字符串转换为 int?

转载 作者:行者123 更新时间:2023-11-29 09:26:03 26 4
gpt4 key购买 nike

我想要一个数组,其中包含从 1 到文本文件行数两倍的数字。在此示例中,文件 somefile.dat 有四行。我试过:

~$ echo {1..$(( `cat somefile.dat | wc -l`*2 ))}
{1..8}

这不是我想要的。但是,括号内的内容显然已被解释为整数。那么,为什么总结果是一个字符串呢?以及如何将其转换为 int 以便输出数字 1 到 8?

最佳答案

Why then, is the total result a string?

那是因为 shell {1..10} 中的大括号范围指令不支持其中的变量。

根据 man bash

Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces.

示例:

echo {1..8}
1 2 3 4 5 6 7 8

n=8
echo {1..$n}
{1..8}

或者您可以使用seq:

seq 1 $n
1
2
3
4
5
6
7
8

关于bash - 如何在 bash 中将字符串转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com