0

私はいくつかの行が同じような構造を持っています

1000    AS34_59329    RICwdsRSYHSD11-2-IPAAPEK-93     /ifshk5/BC_IP/PROJECT/T1
1073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IP
AAPEK-93_1.fq.gz        /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_5932
9/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_2.fq.gz        /ifshk5/
BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/clean_111220_I631_FCC0E5EACXX_
L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz.total.info       11.824  0.981393
43.8283 95.7401 OK

/home/jesse/そして、ボールド部分にこのフォルダーがあるかどうかを確認したいのですが、そうでない場合はmkdirを作成します/home/jesse/AS34_59329

私はこのコードを使用します

  ! /bin/bash
  myPath="/home/jesse/"
  while read myline
  do
     dirname= echo "$myline" | awk -F ' ' '{print $2}'
     echo $dirname
     myPath= $myPath$dirname
     echo $myPath
     mkdir -p "$myPath"

  done < T11073_all_3254.fq.list

しかし、mkdir を実行してパス名を表示することはできません。

 -bash: /home/jesse/: is a directory
 /home/jesse/
 AS39_59324
4

2 に答える 2

1

read各フィールドを個別の変数に読み込むことができmkdir -p、存在しない場合にのみディレクトリを作成します。

path="/home/jesse"
while read _ dir _ 
do 
    mkdir -p "$path/$dir"
done < T11073_all_3254.fq.list
于 2013-02-05T02:11:43.027 に答える
0

for空白で区切られた各トークンを反復処理します。代わりにこれを試してください。

#!/usr/bin/env bash
# Invoke with first arg as file containing the lines
#     foo.sh <input_filename>

for i in `cat $1 | cut -d " " -f2`
do 
    if [ -d /home/jesse/$i ]
    then
        echo "Directory /home/jesse/$i exists"
    else
        mkdir /home/jesse/$i;
        echo "Directory /home/jesse/$i created"
    fi
done
于 2013-02-05T02:06:13.470 に答える