【问题标题】:Use numeric value of input argument in Bash script [duplicate]在 Bash 脚本中使用输入参数的数值 [重复]
【发布时间】:2015-05-22 03:59:19
【问题描述】:

我想使用传递给 bash 脚本的输入参数的数值,如下所示:

./script_pb3.sh out.txt 3

在这里,我想采用我传递的第二个参数(即值 3)并将其用作脚本中的数值,如下所示:

#!/bin/bash
NUM=$2

for i in {1..$NUM}; do
        echo $i
done

但是当我运行它时,我得到的只是

{1..3}

代替

1
2
3

您能否解释一下为什么会发生这种情况以及解决方法?我认为这个问题旨在将字符串值转换为整数值,但我不确定。非常感谢任何帮助。

编辑:答案from here 包含关于我的问题的答案的辩论(即它假设答案是已知的),但它不是我问题的答案,因此我没有找到它我的第一次搜索。不过,谢谢您指出这一点。

【问题讨论】:

  • 使用:for ((i=1; i<=NUM; i++)); do echo $i; done
  • 这确实解决了问题。谢谢!

标签: linux bash command-line-arguments


【解决方案1】:

我认为你必须使用 seq

for i in `seq 1 10`;
 do
    echo $i
 done    

参考:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

所以,你要找的是:seq 1 $2

【讨论】:

  • 这也是一个合法的答案。请将序列编辑为seq 1 $2,以便我接受您对我的问题的回答
  • 您链接到的页面包含许多有问题的、不必要的和/或过时的建议。在这种情况下,seq 是不必要的(非标准)外部要求,而 bash 本身已经具有更高效的 C 样式循环。
  • 我只是想给出一个我认为最接近手头问题的答案。如果您有其他感觉,请随时发布您认为会更好的答案
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 2013-08-24
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
相关资源
最近更新 更多