Linux 在Bash脚本中使用输入参数的数值
我希望使用我传递给bash脚本的输入参数的数值,如下所示:Linux 在Bash脚本中使用输入参数的数值,linux,bash,command-line-arguments,Linux,Bash,Command Line Arguments,我希望使用我传递给bash脚本的输入参数的数值,如下所示: #!/bin/bash NUM=$2 for i in {1..$NUM}; do echo $i done /script\u pb3.sh out.txt 3 在这里,我想采用我传递的第二个参数(即值3),并将其用作脚本中的数值,如下所示: #!/bin/bash NUM=$2 for i in {1..$NUM}; do echo $i done 但当我运行它时,我得到的是 {1..3}
#!/bin/bash
NUM=$2
for i in {1..$NUM}; do
echo $i
done
/script\u pb3.sh out.txt 3
在这里,我想采用我传递的第二个参数(即值3),并将其用作脚本中的数值,如下所示:
#!/bin/bash
NUM=$2
for i in {1..$NUM}; do
echo $i
done
但当我运行它时,我得到的是
{1..3}
而不是
1
2
3
你能解释一下为什么会发生这种情况以及解决办法吗?我认为这个问题旨在将字符串值转换为整数值,但我不确定。非常感谢您的帮助
编辑:答案包含关于我问题答案的辩论(即,它假设答案已经知道),但它不是我问题的答案,因此我在第一次搜索中没有找到它。不过,感谢您指出这一点。我认为您必须使用seq
for i in `seq 1 10`;
do
echo $i
done
参考:
因此,您要寻找的是:seq 1$2使用:
((i=1;这确实解决了问题。谢谢!这也是一个合法的答案。请将seq编辑成seq 1$2
,这样我就可以接受你对我的问题的回答。你链接到的页面包含许多有疑问、不必要和/或过时的建议。在这种情况下,seq
是不必要的(非标准的)外部要求当bash
本身已经有了一个更高效的C风格循环。我只是想给出一个我觉得最接近手头问题的答案。如果你觉得不一样,请随意发布一个你觉得更好的答案