私のコードは次のとおりです
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
ラインが整列され、fold
各uniq -c
ラインの連続発生回数が計算されます。
出力は結果の各一意の行ごとに1行で表示され、fold
先頭に数字が付きます。
構文エラーは、コマンドの置き換え(つまり、コマンドの出力で置き換えられた構成)が次のようになる必要があるという事実から発生します$( ... )
。欠落しているコンテンツを挿入しても、実際にコードが機能しているかどうかはわかりません$
。なぜなら、シェルはまだ結果テキストを改行とスペースに分割するからです。しかし、入力データがどのように見えるかわからないので、推測することは困難です。
(...)
forループのこの場所ではサブシェルは許可されていません。
答え2
あなたは$
失います(fold -w3 $dnafile | uniq)
。この試み: $(fold -w3 $dnafile | uniq)
。
$()
コマンド代替構文であり、()
サブシェルを導入します。