gpt4 book ai didi

linux - 使用 afni 程序在 tcsh 中进行 foreach 循环

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:17 39 4
gpt4 key购买 nike

我在工作中使用一个名为 AFNI 的程序,我们都不是程序员,但我们有足够的知识来应对更多的问题。通常,当我们有很多要运行 AFNI 的文件时,我们必须复制并粘贴命令并在记事本中编辑文件名,然后再将其复制到终端,这可能会导致一些错误。我们正在尝试通过使用 shell 脚本来简化这一过程。

我正在尝试在其中包含 .nii 文件的文件夹上运行 foreach 循环,我希望将这些文件名附加到以“3dclustsim”开头的行的末尾。我希望将文件名放在 $name 所在的位置,以便在该文件上执行命令。

到目前为止,我有:

#!/bin/tcsh

clear
set path = ($path /home/lab/abin)
afni


foreach name (`*.nii`)
3dclustsim -fwhmxyz 16 16 16 -pthr 0.05 0.01 0.005 0.001 -athr 0.05 -nodec -iter 10000 -OKsmallmask -mask /home/lab/Desktop/Masks/$name
end

我没有对上面的任何迭代或我在网上找到的任何修改感到幸运。我知道很多人对 C shell 不屑一顾,但这个程序只能在终端的 Unix/Linux/Mac 机器上的 tcsh 中运行。

如果我还需要提供任何其他信息,请告诉我。

最佳答案

你走在正确的轨道上。

尝试添加/替换这个

cd /path/to/dir/with/nii_files
/bin/ls -l *.nii

foreach name ( * )
3dclustsim -fwhmxyz 16 16 16 -pthr 0.05 0.01 0.005 0.001 -athr 0.05 -nodec -iter 10000 -OKsmallmask -mask /home/lab/Desktop/Masks/$name
end

您的 afni 程序可能正在读取一个配置文件,该文件告诉它把文件放在哪里。您必须 cd 到正确的目录才能处理它们。

您可能做对了,但是您收到一条错误消息 *.nii : No Match 告诉您您要处理的文件不存在。

但是,您的问题中令人困惑的部分是您用反引号将 *.nii 括起来(在 for 循环中)。反引号的意思是“找到结束的反引号,然后获取封闭的字符串并将其作为命令执行。如果该目录中确实没有文件,您应该会看到类似

的内容
 foreach name (`nonesuch`)
nonesuch : Command not Found.

但是,也就是说,如果您使用 cdls,您可以向自己证明您在正确的目录中,然后文件应该是已处理。

此外,如果您使用 Windows 编辑器创建此脚本,然后在 Unix/Linux 上执行,则需要

dos2unix ./myScript.sh
chmod 755 ./myScript.sh
#then you can run it
./myScript.sh

健康教育

关于linux - 使用 afni 程序在 tcsh 中进行 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968185/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com