for

循环变量的输出显示的值与预期不同
for

循环变量的输出显示的值与预期不同

想象一下我当前的工作目录中有两个文件夹:back/和front/。我试图进入他们每个人的内心并做一些事情。从下面的简单脚本: for dir in */ ; do echo "$(dir)" done 我期待这样的输出: back front 然而,我得到的是: back front back front 我不明白。结果是,如果我尝试cd进入该文件夹: for dir in */ ; do echo "$(dir)" cd $(dir) echo "$(pwd)" cd .. done 我得到: back ...

Admin

如何捕获重复模式的所有行并对子结果执行一些操作
for

如何捕获重复模式的所有行并对子结果执行一些操作

我正在寻找一种可能性,以重复的文本模式捕获它们之间的所有可变数量的行,然后在 bash 中对其执行操作。 示例文本: Total: text1 text2 Total: text3 Total: Text1 Text4 Text5 我的目标基本上是对匹配项进行 for 循环Total:,然后对其执行操作,这始终是后续潜台词的第一部分。 就像高级语言一样: for (cat filename = every "Total:" do <something> end 现在对我来说有趣的部分基本上是如何组织 for 循环? 在<something...

Admin

如何在远程通过 SSH 运行 for 循环以便变量扩展?
for

如何在远程通过 SSH 运行 for 循环以便变量扩展?

如果我ls在远程主机中没有 for 循环的文件,一切都很好,但是,如果我捕获ls变量中的 并尝试echo每个文件,它会失败,因为变量没有扩展/没有值。 我的意思是说: IFS=$'\n' servers=( blue green red ) for i in ${servers[@]}; do ssh $i " ls /dir/xyz_${i}*/details.txt " done /dir/xyx_blue0/details.txt /dir/xyz_blue1/details.txt /dir/xyx_green...

Admin

SSH for 循环:传递给变量中捕获的函数的参数未扩展
for

SSH for 循环:传递给变量中捕获的函数的参数未扩展

我有几台服务器,其中有几个文件,其中包含我需要解析的部署日期信息,并获取 2 个月或更早的文件的本地副本。 #!/bin/bash # split on new line not space # don't want to quote everything # globbing desired IFS=$'\n' servers=( blue red ) parseDate() { grep 'deploy_date:' $file | \ sed ... | \ # much mor...

Admin

如何同时提取和删除 zip 存档的内容?
for

如何同时提取和删除 zip 存档的内容?

我想将包含单一文件格式的多个小文件的大型 zip 存档(>180 GB)下载并解压到 SSD 上,但我没有足够的存储空间来容纳 zip 存档和提取的内容。我知道可以使用答案中提到的 zip 命令从存档中提取和删除单个文件这里和这里。我还可以使用命令获取存档中所有文件的名称unzip -l,将结果存储在数组中,如上所述这里,使用给定的方法过滤掉不必要的值这里,并在 BASH 中迭代它们,如上所述这里。所以,最终的逻辑看起来像这样: 列出 zip 文件的内容并将unzip -l文件名存储在 bash 数组中,使用正则表达式来匹配存档中存在的单个文件扩展名...

Admin

将文本文件中单行的多个参数传递到终端
for

将文本文件中单行的多个参数传递到终端

我有一个 python 程序,需要 2 个参数输入文件和输出文件。它读取输入文件并创建该文件的副本,并在输出文件中进行一些修改。 我创建了一个带有一组参数的文本文件。它在多行上有多组参数。但是对于程序的1次执行,它需要逐行读取。因此每行都有 2 个参数(用空格分隔)要传递:输入文件和输出文件。 带有参数的文件示例(称之为每行多个参数的文件.txt): input-file-1-path/input-file-1-name.sql output-file-1-path/output-file-1-name.sql input-file-2-path/inpu...

Admin

是否有一种对变量中的单词或行进行“for”循环的语法,该语法可以在 bourne shell 和 zsh 中未经修改地工作?
for

是否有一种对变量中的单词或行进行“for”循环的语法,该语法可以在 bourne shell 和 zsh 中未经修改地工作?

我有一个变量,其中包含要在命令中循环的字符串列表,每行一个for...in...do...done。 我经常在 bourne shell 和 zsh 之间切换。据我所知,默认情况下,zsh 不会在换行符或空格处从字符串中分割单词;伯恩壳确实如此。因此,像 zsh 这样的命令for list_item in $list; do...会失败,而它们可以在 bourne shell 中工作,或者使用文字文本而不是变量。我尝试在命令中使用IFS=并引用变量,但似乎无法取得进展。 是否有一个用于循环字符串中的单词/行的单一语法,可以在两个 shell 中不经修改地工作...

Admin

使用 ffmpeg 递归修复损坏的视频文件
for

使用 ffmpeg 递归修复损坏的视频文件

我想我已经非常接近拥有一个从目录开始的代码,然后使用 fd (而不是 find)和 ffmpeg 吐出一个固定的副本。我在这里将 if 语句编写为伪代码: for i in $(fd -e .mp4 -e .avi); do if [ffmpeg -v error -i "$i" -f null - 2] has an error, then ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv; done 我相信,当您使用“致命”时,如果没有致命错误,文件将为空白/零。哪个...

Admin

for 循环遍历多个目录和多个文件
for

for 循环遍历多个目录和多个文件

我想检查每个 .bam 文件是否都附带 .bai 文件。因此,如果 clean_xyz_1.sorted.bam 存在,clean_xyx_1.sorted.bam.bai 也应该存在。每个文件的中间都有一个变量字符串 (xyz)。我想检查多个文件夹以确保这两个文件都存在。如果这两个文件都不存在,我想运行一个命令。但是,我无法检查多个目录中的两个文件。这是我尝试过的: dirs=(*/) clean="clean_" sorted="_1.sorted.bam" for i in "$dirs"/"$clean"*"$sorted"*; do if [...

Admin

Shell 脚本中具有多个 IF 条件的 For 循环
for

Shell 脚本中具有多个 IF 条件的 For 循环

首先,在/tmp/test文件路径中我有以下目录 amb bmb cmb 通过运行该find命令,我将在这三个目录中获取以下文件列表: amb/eng/canon.amb bmb/eng/case.bmb cmb/eng/hint.cmb 我试图list1使用for循环并根据文件类型从中获取每个文件,*.amb或者*.bmb特定*.cmb的 IF 应执行: cd /tmp/test find */ -type f -exec ls {} \; > /tmp/test/list1 for file in `cat /tmp/test/list1` d...

Admin

For 循环遍历变量向量
for

For 循环遍历变量向量

我有一个 for 循环和 case 语句。 for 循环有相当多的元素列表,case 语句将分配一个一维数组或向量。这些值将在之后的 for 循环中使用。我有以下代码。 发生的情况是 for 循环仅针对向量中的第一个值执行此操作。例如,如果 f=C,则情况为“C”) isotope=(6012 6013);; for n in $isotope:它仅循环 6012,而不循环 6013。与 f=Ce 相同的问题,它仅循环 58136,而不循环其余部分。 # loop through elements for f in C Ce do cd ${f} cas...

Admin

具有多个变量的“for i in”循环
for

具有多个变量的“for i in”循环

我有两个变量 VAR1="1 2 3" VAR2="Bob Tom Kate" 我想回显这样的内容,但我不知道如何在循环中使用多个变量: 1 for Bob 2 for Tom 3 for Kate 我所能做的就是: ( for i in $VAR1; do echo "$i" done ) ...

Admin

如何循环遍历目录中的所有文件并打印所有文件名,就像命令树一样
for

如何循环遍历目录中的所有文件并打印所有文件名,就像命令树一样

如何模仿tree命令并迭代目录的所有文件和子目录并回显所有文件名? 我认为目录中的子目录仍然算作目录,所以我这样做了: for FILE in *; do if [ -d $FILE ] then echo "$FILE is a directory"; else echo "$FILE is a file" fi done 如何使其递归并在子目录内循环并迭代所有文件并打印它们的文件名+路径? 这是一个使用 bash 的 shell 脚本。谢谢! ...

Admin

Unix。在特定文件的多个目录中运行脚本,其中路径名具有正则表达式
for

Unix。在特定文件的多个目录中运行脚本,其中路径名具有正则表达式

我想制作一个 bash 脚本(split.sh),它迭代具有相同后缀的多个目录,然后针对其中的特定文件运行一个函数。我快到了: #!/bin/bash path="/mypath/MAP-9-[0-9][0-9][0-9]" for filename in $path/*bam; do [ -e "$filename" ] || continue echo $filename for chrom in `seq 1 22` X Y do samtools view -bh $filename ...

Admin

为什么测试命令明显被 for 循环变量阻塞?
for

为什么测试命令明显被 for 循环变量阻塞?

我想确定目录中所有损坏的符号链接。 由于不知道更好的解决方案,我尝试了这个简单的 bash 单行(bash 版本是 4.2.46,可能值得一提,因为它有点过时): for f in $(ls); do test -L "$f" || continue; test -e "$f" || echo "$f deadlink"; done 不幸的是这不起作用。我尝试确定错误,如果我运行这个 for f in $(ls); do test -L $f && echo "$f is a valid symlink"; done 尽管存在有效的符号链...

Admin