相关疑难解决方法(0)

如何迭代Bash中变量定义的一系列数字?

当变量给出范围时,如何在Bash中迭代一系列数字?

我知道我可以这样做(在Bash 文档中称为"序列表达式" ):

 for i in {1..5}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)

这使:

1
2
3
4
5

但是,如何用变量替换任何一个范围端点?这不起作用:

END=5
for i in {1..$END}; do echo $i; done
Run Code Online (Sandbox Code Playgroud)

哪个印刷品:

{} 1..5

syntax bash shell for-loop

1409
推荐指数
18
解决办法
102万
查看次数

参数在bash脚本中传递给for循环

我试图将参数作为for循环的最大限制传递,如下所示:

#!/bin/bash

for i in {1..$1}
do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

然而,这{1..2}在使用参数调用时返回2,而不是执行脚本并给我

1
2
Run Code Online (Sandbox Code Playgroud)

bash loops command-line-arguments

23
推荐指数
2
解决办法
3万
查看次数

用变量支撑扩展?

#!/bin/sh
for i in {1..5}
do
   echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)

会工作,显示欢迎5次.

#!/bin/sh
howmany=`grep -c $1 /root/file`
for i in {1..$howmany}
do
   echo "Welcome"
done
Run Code Online (Sandbox Code Playgroud)

Doesn't work! howmany would equal 5 as that is what the output of grep -c would display. $1 is parameter 1 which is specific when running the script.

Any ideas?

variables syntax bash variable-expansion

16
推荐指数
5
解决办法
6483
查看次数

使用getopt时,"for i"没有"in [sequence]"结尾

我找到了在shell中使用getopt命令的示例脚本.

#!/bin/bash
args=$(getopt ab $*)
set -- $args
for i;
do
    case "$i" in
    -a)shift; echo "it was a";;
    -b)shift; echo "it was b";;
esac;
done
Run Code Online (Sandbox Code Playgroud)

它运作良好,但我不明白变量$ i指派在哪里.怎么知道它必须遍历$ arg.你能解释一下吗?

bash shell getopt

6
推荐指数
1
解决办法
981
查看次数

如何从用户提供的输入打印偶数

我在这里有这个代码以及它应该做什么:

用户输入最大数量。并根据输入的数字,我想显示该数字之前的所有偶数。

#! /bin/bash
echo "What is your max number:"

read counter


for number in {0.."$counter"}

if [ (($number % 2 == 0)) ]
then
echo "$number"
fi
Run Code Online (Sandbox Code Playgroud)

但它不起作用。相反,当我从终端调用他的脚本时,我收到了这个错误:

[root@sunshine Desktop]# bash Tester
What is your max number:
9
Tester: line 9: syntax error near unexpected token `if'
Tester: line 9: `if [ (($number % 2 == 0)) ]'
Run Code Online (Sandbox Code Playgroud)

linux bash

4
推荐指数
1
解决办法
7145
查看次数

sh shell for loop without seq

我正在编写一个必须在bash和sh中运行的脚本,它在一个微小的平台上运行,并且有些东西似乎缺失了,例如seq.所有这些限制/要求使得编写此脚本非常困难.我需要编写一个在所有这些要求下工作的for循环.

这仅适用于bash:

for (( i = 0; i <= 4; i++ ))
do
  echo $i
done
Run Code Online (Sandbox Code Playgroud)

这应该在sh中工作,但我正在使用的平台显然缺少seq.

for i in $(seq 1 $INPUT); do
Run Code Online (Sandbox Code Playgroud)

$ INPUT是用户定义的最大值.

bash for-loop sh

2
推荐指数
1
解决办法
847
查看次数

有没有比使用 while 循环更有效的方法来创建每行包含重复文本的文件?(100万行以上)

我需要创建一个仅包含点符号“.”的文本文件。在每一行上重复,直到达到变量中存储的特定行数。我现在使用 while 循环,但那些带点的文件需要大约 0.5-5 百万行。因此,它需要的时间比我想要的要长一些。下面是我当前的代码:

j=0
while [[ $j != $length ]] 
do
  echo "." >> $file
  ((j++))
done
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:除了使用 while 循环之外,是否有更有效的方法来创建一个包含 x 行且每行包含相同字符(或字符串)重复的文件?

谢谢,

bash shell

0
推荐指数
1
解决办法
483
查看次数