Questions tagged «for»

标记,用于表示与for循环有关的任何问题

6
为什么遍历find的输出是不好的做法?
这个问题的灵感来自 为什么使用shell循环处理文本被认为是不好的做法? 我看到这些构造 for file in `find . -type f -name ...`; do smth with ${file}; done 和 for dir in $(find . -type d -name ...); do smth with ${dir}; done 即使有些人花时间在这些帖子上发表评论,解释为什么应避免此类事情的原因,也几乎每天都在这里使用... 看到此类帖子的数量(以及有时忽略这些评论的事实)我想我不妨问一个问题: 为什么循环遍历find输出是不正确的做法,并且为每个返回的文件名/路径运行一个或多个命令的正确方法是find什么?
170 files  find  filenames  for 

1
Bash for循环中“ do”关键字的目的是什么?
doBash for循环语法中关键字的目的是什么?对我来说,这是多余的。 for i in `seq 1 2`; do echo "hi"; done 为什么不是这样的语法? for i in `seq 1 2`; echo "hi"; done 我确信它确实可以达到目的。我只想学习。
76 bash  shell  for 

4
在bash中,是否可以在for循环的循环控制中使用整数变量?
我有以下bash脚本: #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 第一个for循环(在循环控制中没有变量upperlim)可以正常工作,但是第二个for循环(在循环控制中具有变量upperlim)不能正常工作。有什么方法可以修改第二个for循环以使其起作用?谢谢你的时间。
65 bash  shell  shell-script  for 


3
在bash shell脚本中,编写对字符串值进行迭代的for循环
在bash中,我知道可以编写一个for循环,其中一些循环控制变量i在指定的整数上进行迭代。例如,我可以编写一个bash shell脚本来打印1到10之间的整数: #!/bin/bash for i in {1..10} do echo $i done 如果我提供字符串列表,是否可以替代地循环访问一个字符串的循环控制变量?例如,假设我有一个fname代表文件名的字符串。我想为每个文件名调用一组命令。例如,我可能想fname使用如下命令打印内容: #!/bin/bash for fname in {"a.txt", "b.txt", "c.txt"} do echo $fname done 换句话说,在第一次迭代中,fname应具有值fname="a.txt",而在第二次迭代中,fname应具有值fname="b.txt",依此类推。不幸的是,上述语法似乎不太正确。我想获得输出: a.txt b.txt c.txt 但是当我尝试上面的代码时,我得到以下输出: {a.txt, b.txt, c.txt} 您能否帮助我确定正确的语法,以便可以迭代地更改变量的值/内容fname?感谢您的时间。
24 bash  shell-script  for 

4
避免由于星号未扩展而导致的错误
在bash中,我经常使用如下的for循环 for file in *.type; do sommecommand "$file"; done; 对所有匹配的文件执行操作*.type。如果在工作目录中找不到以此结尾的文件,星号不会展开,通常我会收到一条错误消息,提示somecommand找不到该文件。我可以立即想到几种避免此错误的方法。但是添加一个条件似乎并不十分优雅。有没有一个简短的方法来实现这一目标?
16 bash  wildcards  for 

4
循环浏览文件夹并列出文件
我有一个名为“ sample”的文件夹,并且其中有3个文件。我想编写一个Shell脚本,它将读取示例文件夹中的这些文件,并使用curl将其发布到HTTP站点。 我写了以下文件列出文件夹中的文件: for dir in sample/*; do echo $dir; done 但这给了我以下输出: sample/log sample/clk sample/demo 它在其中附加了父文件夹。我希望输出如下(没有父文件夹名称) log clk demo 我该怎么做呢?

4
$ {!FOO}和zsh
${!FOO}在中执行双重替换bash,这意味着它接受FOO的(字符串)值并将其用作变量名。 zsh不支持此功能。 有没有一种方法,使这项工作同样在bash和zsh? 背景: 我有一个环境变量列表,例如 PATH MAIL EDITOR 并想先打印变量名,然后再打印它们的值。 这适用于bash但不适用zsh: for VAR in LIST do echo $VAR echo ${!VAR} done 应该可以通过某种方式实现“旧方法” eval,但是我无法使其正常工作: for VAR in LIST do echo $VAR echo `eval \$$VAR` done 我永远也不会理解为什么我不能简单地进行像${${VAR}}或什至${${${VAR}}}需要这样的任意深度替换,因此对此做一个解释也很好。

3
多变量循环
有没有一种方法可以在for循环中指定多个变量(不仅仅是整数)bash?我可能有2个文件,其中包含我需要使用的任意文本。 我在功能上需要的是这样的: for i in $(cat file1) and j in $(cat file2); do command $i $j; done 有任何想法吗?

4
循环浏览除目录之外的文件
我需要我的脚本对当前目录中的每个文件(不包括任何子目录)执行某些操作。 例如,在当前路径中,有5个文件,但其中1个是文件夹(子目录)。运行所述脚本时,我的脚本应激活作为参数给出的命令。即“ bash脚本wc -w”应提供当前目录中每个文件的字数,但不能提供任何文件夹的字数,因此输出永远不会包含“ / sub / dir:Is a directory”行。 我当前的脚本: #!/bin/bash dir=`pwd` for file in $dir/* do $* $file done 我只需要为循环排除目录,但是我不知道如何。
11 bash  for 



2
在数组的循环中,向数组添加元素
我对bash中的for循环有问题。例如:我有一个数组("etc" "bin" "var")。我在这个数组上进行迭代。但是在循环中,我想将一些值附加到数组中。例如 array=("etc" "bin" "var") for i in "${array[@]}" do echo $i done 显示etc bin var(当然在单独的行上)。如果我这样追加do: array=("etc" "bin" "var") for i in "${array[@]}" do array+=("sbin") echo $i done 我想要:(etc bin var sbin当然在单独的行上)。 这是行不通的。我该怎么做?
9 bash  array  for 


1
for循环在bash中不起作用
我有下面的代码来替换多个文件中的某些strigns,但是for循环正在检查第一个文件,而不执行perl脚本。下面是我的代码 if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ] then for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*); do perl -i -p -e 's/input/inout/g' $file; perl -i -p -e 's/output/inout/g' $file; perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file; perl -i -p -e 's/assign.*\n//g' $file; done fi
7 bash  for 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.