Articles of for loop

用可变的顶端编写一个bash for-loop

我经常使用众所周知的语法在bash中编写for循环: for i in {1..10} […] 现在,我正试图写一个顶部由variables定义的地方: TOP=10 for i in {1..$TOP} […] 我已经尝试了各种各样的parens,花括号,评估等,并且通常会返回一个错误的“错误替代”。 我怎么能写我的for循环,以便极限取决于一个variables,而不是一个硬编码值?

用空格循环数组string

我试图通过包含其他数组的数组循环,这些数组由包含空格的string组成。 问题是,我似乎无法保留string中的间距。 如果我将IFS更改为\ n,或者将数组的所有元素都视为1项,如果我将IFS保持不变,则这些包含空格的string将被分成多个项目: #!/bin/sh low1=("AA QQ" "BB LL") low2=("CC" "DD") low3=("EE" "FF") high=(low1 low2 low3) for high_item in ${high[@]} do eval arrayz=\${$high_item[@]} #IFS=$'\n' for item in $arrayz do echo $item done done 输出: AA QQ BB 二 CC DD EE FF 正如你所看到的,“AA QQ”和“BB LL”的元素已经被拆分了。 如果我取消注释将IFS设置为\n的行,我会得到以下结果: AA QQ BB LL CC DD EE FF 现在“AA […]

为什么不能用cat来逐行读取文件,每行都有分隔符

我有一个文本文件,包含这样的东西: abc 123, comma the quick brown fox jumped over the lazy dog comma, comma 我写了一个脚本 for i in `cat file` do echo $i done 出于某种原因,脚本的输出不会逐行输出文件,而是在逗号处以及换行符处将其分开。 为什么是猫或“在cat xyz ”这样做,如何使它不这样做? 我知道我可以使用一个 while read line do blah balh blah done < file 但是我想知道为什么cat或者“for blah in”这样做是为了进一步理解unix命令。 猫的手册页没有帮助我,并在bash手册中查找或循环没有得到任何答案( http://www.gnu.org/software/bash/manual/bashref.html )。 在此先感谢您的帮助。

我怎样才能做一个bash脚本recursionforeach * .mp3文件?

以下在当前文件夹中正常工作,但我希望它也扫描子文件夹。 for file in *.mp3 do echo $file done

批处理:如何在parsing输出时纠正variables覆盖不当行为

在batch file中,我正在检查Baseboard信息,其中包含以下内容: BaseboardCheck.cmd @echo off setlocal enabledelayedexpansion for /f "tokens=1,2* delims==" %%a in ('wmic baseboard get /format:list') DO ( if ["%%a"] EQU ["Product"] ( set PlatformInfo=%%b if defined PlatformInfo ( echo.!PlatformInfo! echo.!PlatformInfo!This overwrites the variable ) ) if ["%%a"] EQU ["Version"] ( set BaseboardVersion=%%b if defined BaseboardVersion ( echo.!BaseboardVersion! echo.!BaseboardVersion!This overwrites the variable ) ) […]

loop&nslookup的批处理脚本

我之前看过这个问题,但没有解决我的问题。 我只是试图遍历包含主机名的文本文件。 当我从命令行尝试相同的命令(省略额外的百分号)时,它将工作一两次然后给出下面指出的错误。 将其作为batch file运行,batch file将不做任何事情而退出。 这一个真的难倒我。 以下是我的batch file中的代码: @echo off set OUTPUTFILE=Results/Results.txt set lookup=HostNames.txt FOR /F %%i in (%lookup%) do FOR /F "usebackq skip=3 delims=: tokens=2" %j in (`nslookup %i`) do @echo %%i %%j >> %OUTPUTFILE% 在一个命令行我得到: 我)在这个时候是意外的。 当我在命令行中运行它时,我将在batch file中运行时取出其他百分号。 我也在命令行中使用绝对path,以确保这不是我设置的环境variables的问题。

拆分path并在批处理脚本中取最后的文件夹名称

我想用\分割string(有一个path),并把最后一个文件夹名称放在一个variables中。 请帮忙。 例如 mypath中= d:\ FOLDER1 \ FOLDER2 \ FOLDER3 \ 我想在一个variables的FOLDER3。 我试着用下面的命令工作,如果最后一个字符不是\ : for %f in (C:\FOLDER1\FOLDER2\FOLDER3) do set myfolder=%~nxf 如果最后一个字符是\ 另外它不工作,如果使用variables如: for%f(%mypath%)do set myfolder =%〜nxf

join多个文本文件

我有四个文本文件,如附图所示。 我用来join和巩固它们的广义脚本是: @echo off setlocal enableDelayedExpansion :: Clear any existing $ variables for /f "delims==" %%A in ('"set $ 2>nul"') do set "%%A=" :: Load data set "cnt=0" set "blank= " set "null= NULL" set "width=8" set "labelWidth=22" set "lineWidth=0" set "lookup= FreePhysicalMemory:2 TotalVisibleMemorySize:3 CPULoadPercentage:4" for %%F in (server1.txt server2.txt server3.txt server4.txt) do ( set […]

嵌套批循环

下面的嵌套for循环让我疯狂(在Windows 7上): @echo off SetLocal EnableDelayedExpansion set TESTDIRS=fast mid slow set TD=src\test\resources\testsuite for %%d in (%TESTDIRS%) do ( set CTD=%TD%\%%d echo CTD: !CTD! REM Echos the expected path echo CTD: %CTD% REM Echos nothing — understandable for /R !CTD! %%f in (*.fs) do (echo %%f) REM Echos nothing — why? for /R src\test\resources\testsuite\fast %%f in […]

Windowsbatch file – 分割string以设置variables

我觉得我正在用FOR循环选项圈选。 我试图采取一个string(输出一个命令),并将其拆分为逗号,然后使用每个值来设置,例如 string: USER=Andy,IP=1.2.3.4,HOSTNAME=foobar,PORT=1234 所以我想分开逗号,然后从字面上在SET中使用该variables。 事先并不知道有多less变数。 我尝试过这样的事情: FOR %%L IN (%MYSTRING%) DO ECHO %%L 但是在等号上也会分裂,所以我最终得到了 USER Andy IP 1.2.3.4 等等 我只是想能够做到以下,所以我可以SET USER=Andy等,如: FOR %%L IN (%MYSTRING%) DO SET %%L 我错过了哪些选项或标志?