我正在编写一个BASH脚本,它循环遍历列表文件pt2.lst的内容,运行一个Perl脚本并使用基于pt2.lst内容的文件名保存输出。 以下代码工作:
while read p; do perl Collect_Vaf.pl $1 $p > "$p_vaf.lst" done < pt2.lst
…只是因为Perl脚本使用第二个命令行参数来命名打印到的文件。 运行上面的脚本“perl Collect_Vaf.pl $ 1 $ p”也可以在这种情况下工作。
我不想将文件保存在脚本运行的同一目录中,而是想根据pt2.lst的内容创build名称为新的目录。 我认为这将工作:
while read p; do STR = "Sample_$p" mkdir $STR perl Collect_Vaf.pl $1 $p > "$STR/$p_vaf.lst" done < pt2.lst
但是这给了我循环的每个迭代的以下三个错误消息:
如何循环通过命令的输出?
Cmultithreading处理,意外的cpu消耗
如何在Windows命令行中执行for循环?
批处理脚本“继续”在循环?
批处理循环脚本
Vaf_Plotter.sh: line 11: STR: command not found usage: mkdir [-pv] [-m mode] directory ... Vaf_Plotter.sh: line 13: /.lst: Permission denied
如何创build基于variables的目录,然后将文件保存到循环中的所有目录?
以下是可能相关或不相关的详细信息列表:
文件pt2.lst是用bash脚本生成的。 每行包含一个4-5位数字
我打算通过在循环中运行多个脚本来将多个文件保存到每个新创build的目录中; 为了简单,我只包含一个
BASH脚本使用一个必需的参数$ 1来运行,它用作许多脚本命令的input文件
使用批处理脚本循环延迟扩展
继续总是非法在JS中切换,但打破工作正常
Bash:循环直到命令退出状态等于0
去除赋值运算符周围的空格。 那就是,而不是这个:
STR = "Sample_$p"
你必须这样写:
STR="Sample_$p"
perl Collect_Vaf.pl $1 $p > "$STR/$p_vaf.lst"
应该:
perl Collect_Vaf.pl $1 $p > "$STR/${p}_vaf.lst"
因为根据你的错误信息,没有名为$p_vaf变量。 这也意味着,当你描述你的第一个例子是“它的工作”,当然这是不正确的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。