このシェルスクリプトにはどのような問題がありますか?

このシェルスクリプトにはどのような問題がありますか?

2つの一時ファイルを作成できません!なぜできないの?助けてください! !入力ファイルには2つのファイル名列があります。

ただし、「fn1」、「fn2」両方のファイルを「Data1.dat」、「Data2.dat」にコピーすることはできません。

ここで何の問題がありますか?

#!/bin/bash

FF1=$1
while IFS=" " read -r line1  line2; 
do
  fn1=$line1
  fn2=$line2

  cp $fn1   Data1.dat
  cp $fn2   Data2.dat

...other ext-scripts!...

done  < $FF1

このコードはコピーに失敗し、2つの一時データファイルが生成されました!それでも「cp タスクラインに関するエラーメッセージ」があります。

これら2つのファイルを正しく作成するのに役立ちます。ありがとうございます。

ベストアンサー1

以下を使用してループを再現しました。

while IFS="  " read -r line1 line2; do echo "cp $line1 $line2"; done <in

これは単純な "in"ファイルを使用して次のものを生成します。

cp 111 aaaa
cp 222 bbb
cp 3333 ccccc

しかし、3行目に以下が含まれていると言うとサム名前(つまり、スペースのある名前)を取得すると、

cp 33 33 ccccc

突然、cp「複数のファイルを1つのディレクトリにコピー」モードに「切り替え」ますが、ターゲット「ccccc」(または「Data1.dat」)がディレクトリではないため失敗します。

cp: 'Data2.dat'の後にターゲットファイルオペランドがありません。

これは後で発生しますcp onefile。何かあなたの主張を混乱させています。いくつかのテストをしなければなりません...

入力ファイルには2つのファイル名列があります。

確かですか?

おすすめ記事