2017-10-21 10 views
1

私はディレクトリ内の一連のファイルをループし、 'cut'ファイル。 権限が拒否されました。その理由を特定できません。 以下は私のスクリプトです。ループ内で変数を作成しています - 許可が拒否されました

FILES=./data/* 

for f in $FILES 
do 
    NEWNAME=$($f|cut -c3-12) 
    echo $NEWNAME 
done 

究極の目標はmkdir /path/to/new/directory/$NEWNAMEで、下流の処理のためにファイルごとに1つのディレクトリを作成することです。

+0

「。/ data/*」内のファイルのパーミッションはどのようなものですか? – alfasin

答えて

3

$(stuff)は、コマンドとしてstuffを実行し、その出力をコマンドラインに戻します。それはコマンドとして$fを実行しようと

$($f|cut -c3-12) 

、およびcutにパイプ、その出力:だから、やるとき。 $fのファイルに実行権限がないため、エラーが発生します。

あなたは変数$fの内容をカットしようとしている場合、あなたはそれをエコーする必要があります。

NEWNAME=$(echo "$f" | cut -c3-12) 

しかし、このためにcutを使用する必要はありません、bashは内蔵のパラメータ拡張演算子を持っています部分文字列を選択するには:

NEWNAME=${f:2:10} 
+0

ありがとう!それは働きました、そして、構文の使用についてより明確にします。 – CAsimonet

関連する問題