forループに括弧を追加できないのはなぜですか?

forループに括弧を追加できないのはなぜですか?

私のコードは次のとおりです

dnafile=$1

for seq in (fold -w3 $dnafile | uniq); do
              fold -w3 $dnafile | grep $seq | wc -l
              echo $seq
              echo '(new line)'
done

エラーが発生します。

syntax error near unexpected token `('

ベストアンサー1

生成された一意の行数を計算したいようですfold -w3 $dnafile。これはループなしで実行できます。

fold -w3 "$dnafile" | sort | uniq -c

出力sortラインが整列され、folduniq -cラインの連続発生回数が計算されます。

出力は結果の各一意の行ごとに1行で表示され、fold先頭に数字が付きます。


構文エラーは、コマンドの置き換え(つまり、コマンドの出力で置き換えられた構成)が次のようになる必要があるという事実から発生します$( ... )。欠落しているコンテンツを挿入しても、実際にコードが機能しているかどうかはわかりません$。なぜなら、シェルはまだ結果テキストを改行とスペースに分割するからです。しかし、入力データがどのように見えるかわからないので、推測することは困難です。

(...)forループのこの場所ではサブシェルは許可されていません。

おすすめ記事