我可以在shell脚本中迭代变量中的数据吗?

时间:2013-09-30 06:51:17

标签: shell unix tcsh

所以我现在正在学校学习shell脚本,我正在研究这项任务并被卡住了。 我们的prof / TA将通过运行简单的命令来测试这些问题的答案:

echo <random numbers>| sh question1

随机数可以是任何东西。即

echo 7 8| sh question1 因此,我不想尝试获得任务问题的答案,但我知道如何解决这个问题但是,我有点想要解决这个问题。

我在question1文件的开头尝试这样的事情:

VAR1=tr -d [" "]

我的思维过程是,我试图删除它给出的数字之间的任何空格并将其放入变量中。 但现在我想知道如何迭代变量

中的数字

我可能需要2-3周的shell脚本,我首先学习了python,所以我甚至不确定我是否可以迭代它。 但我认为可能有一种方法可以获取文件的内容,迭代它们并且可以一次访问一个字符或整数。 这有可能吗?我花了很多时间试图找到解决方案。

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

这个例子有帮助吗?

for i in $* 
    do
    echo $i
done 

$*是命令行参数的列表,因此将其作为./file.sh a b c运行将打印b c

您的输入显然出现在管道上,接下来就是这样做

echo 1 2 3 | xargs ./file.sh

xargs将管道值转换为shell程序参数值

答案 1 :(得分:0)

Vorsprung's answer的另一种方法是在脚本中读取单行输入,然后使用它来设置该脚本的参数。在脚本的顶部:

read line
set -- $line

然后你可以使用相同的for循环:

for i in $*; do
    echo $i
done

这与Vorsprung的假设相同:输入将是一行空格分隔值。如果这个假设是假的,我希望你的教师将更加具体地说明你的脚本应该能够接受的输入类型。