Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash-Linux中的编号字符串_Linux_Bash - Fatal编程技术网

bash-Linux中的编号字符串

bash-Linux中的编号字符串,linux,bash,Linux,Bash,我想在bash中定义串联的编号字符串,如下所示: String1 String2 String3 String4 String5 到目前为止,我所做的工作如下,但效果不好 #!/bin/bash str_name='String' for i in `seq 1 5` do expr=$(($str_name + $i)) #this part is what I cannot deal with it. echo $expr done 谢谢您正在做的是添加算术意义上的变量。您要使用以下选项

我想在bash中定义串联的编号字符串,如下所示:

String1
String2
String3
String4
String5
到目前为止,我所做的工作如下,但效果不好

#!/bin/bash
str_name='String'
for i in `seq 1 5`
do
expr=$(($str_name + $i)) #this part is what I cannot deal with it.
echo $expr
done

谢谢

您正在做的是添加算术意义上的变量。您要使用以下选项:

expr="${str_name}${i}"
注意:没有必要用括号括住变量。我之所以这样做,是因为它有时更容易阅读,它还可以防止我犯愚蠢的错误


更详细地说,
$(…)
执行子shell中括号之间的任何操作并返回结果。我不确定在回显
$expr
时您在哪里得到了什么输出,但我推测这是一条错误消息。类似于
命令字符串+1的内容找不到
,但我真的不知道。

您甚至不需要在另一行中使用echo。试试这个

#!/bin/bash
str_name='String'
for i in `seq 1 5`
do
echo $str_name$i
done
大括号展开是可以在某个范围内迭代的另一种方式:

for i in {1..5}; do
    printf "String%d\n" $i
done
例如:

$ for i in {1..5}; do printf "String%d\n" $i; done
String1
String2
String3
String4
String5

“它不好用”-你可以通过说什么不好用来帮助这里的人!f、 e:错误消息?您得到的输出是什么?
printf“%s\n”String“{1..5}
?没有错误:这里不是关于
$(…)
,而是关于
$(…)
,它是一种算术扩展,不是命令替换。在OP的例子中,
String
是未定义的,因此在算术中分别扩展到
0
,因此扩展
$expr
1
2
3
4
5
。你完全正确@gniourf\gniourf-不知道我在想什么。我要把最后一段删掉。你介意我在我的回答中加上你的评论吗?