Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 创建SED目录时出错_Bash_Sed_Cat - Fatal编程技术网

Bash 创建SED目录时出错

Bash 创建SED目录时出错,bash,sed,cat,Bash,Sed,Cat,我试图使用SED创建一系列目录,这些目录都包含一个同名文件,但每个目录中的每个文件都有一行不同 for i in $( cat ~/SCRIPTS/AALIST.txt); do mkdir ~/jan10/25 sed -e "s/HAT/${i}/" <~/SCRIPTS/HAT25.inp > ~/jan10/25/25$i/mat.inp 鉴于HAT25.inp有很多行文本,然后第25行有“HAT”一词,这个HAT应该替换为A、B、C等。在目录25中,SED应该创建

我试图使用SED创建一系列目录,这些目录都包含一个同名文件,但每个目录中的每个文件都有一行不同

for i in $( cat ~/SCRIPTS/AALIST.txt);  do

mkdir ~/jan10/25

sed -e "s/HAT/${i}/"  <~/SCRIPTS/HAT25.inp > ~/jan10/25/25$i/mat.inp
鉴于HAT25.inp有很多行文本,然后第25行有“HAT”一词,这个HAT应该替换为A、B、C等。在目录25中,SED应该创建名为25A、25B、25C等的目录。这些目录中应该是原始HAT25.inp文件,HAT替换为父目录的字母。我的意思是,目录25A应该包含重命名为mat.inp的HAT.inp,并在第25行包含A,而不是HAT。不幸的是,当我尝试执行上面的代码时,我得到了错误:

cannot create directory `/home/user/jan10/25': File exists
./loop.sh: line 23: /home/user/jan10/25/25$i/mat.inp: No such file or directory
是否有任何关于我做错了什么的见解,我很难确定我到底犯了什么错误

编辑:

通过注释掉mkdir行,我现在收到以下错误。已创建目录“25”,但未创建目录25A、25B等。收到的错误如下

./loop.sh: line 23: /home/user/jan10/25/25A/mat.inp: No such file or directory
  • 您的代码缺少一些信息(循环结束、创建时的文件夹结束名以及
    $()

  • 一些增强剂(sed不需要
    你知道你的
    mkdir
    在你的循环中,并且在每个循环中执行,因此
    无法创建dir…
    ?也许你真的想要
    mkdir~/jan10/25/$i
    ?这个
    25/25$i
    错误有点神秘。给定你的代码,我不会想到这是真的代码,是b吗正在执行?祝你好运。你是对的,mkdir肯定不应该在循环中,但即使注释掉了,问题仍然存在。创建了目录25,但没有子目录(25A、25B等)已创建。我现在收到的错误已在上面编辑!我真的认为您的问题的主要来源是您想要
    mkdir~/jan10/25/$I
    ,对吗?使用它可能会修复其他错误。啊,我真傻,是的,您是对的Sheller!提交一个答案,这完全正确。谢谢,我会尝试一下!@George:这是e更好,所以请接受它。祝大家好运。这很好,但在代码之前,我添加了一个简单的命令来实际生成编号的目录,没有“mkdir~/jan10/25”,除非目录已经存在,否则它不会工作,干杯,这段代码工作得很好!
    ./loop.sh: line 23: /home/user/jan10/25/25A/mat.inp: No such file or directory
    
    for i in $( cat ~/SCRIPTS/AALIST.txt )
     do
    
       NewFolder=~/jan10/25/25${i}
       mkdir "${NewFolder}"
    
       sed -e "s/HAT/${i}/" ~/SCRIPTS/HAT25.inp > "${NewFolder}/mat.inp"
    
    done