我是 Linux 世界的新手,我使用 Bash shell 并进行了一些练习。我怎样才能执行一个循环给计数器一个表达式?例如循环遍历文件中的单词量。
for n in(wc -w text.txt)
do
echo "word number $n"
done
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的脚本不起作用。到目前为止我发现的唯一方法是首先打印 wc -w text.txt 的值,然后将其分配给一个变量,然后循环:
wc -w text.txt
a=10 //result saw by wc -w text.txt
for((b=0; b<a; b++))
do
echo "$b"
done
Run Code Online (Sandbox Code Playgroud)
问题是我需要检索 wc -c 的值并将其直接赋值给一个变量,以防万一我必须编写一个自动运行的脚本,问题是
a= wc -w test.txt
Run Code Online (Sandbox Code Playgroud)
不管用,
有什么建议吗?
一个干净的方法是
tmp=$(wc -w <text.txt)
for ((i=0; i<$tmp; i++))
do
echo $i;
done
Run Code Online (Sandbox Code Playgroud)
该<text.txt
部分是必要的,因为通常该命令的输出wc
是
wordcount1 INPUTFILE1
wordcount2 INPUTFILE2
...
Run Code Online (Sandbox Code Playgroud)
的最大值i
必须等于文件的字数,因此您必须INPUTFILE1
在循环按预期工作之前删除该部分。使用输入流<
而不是文件名可以解决这个问题。
使用临时变量可以防止wc
在每次迭代时被调用。