1

ばかげているようです...何が間違っているのかわかりません....

.txt ファイルのエンコーディングを utf-8 に変更する必要があります。ここにスクリプト:

#!/bin/bash
for NOME_ARQ in *.txt do

##1 - verify file encoding and store in CODIFICACAO
CODIFICACAO=$(file --mime-encoding "$NOME_ARQ" | cut -d" " -f2)

##2 - convert to utf-8
iconv -f "$CODIFICACAO" -t utf-8 "$NOME_ARQ" -o temp01.txt

done    

##1 に対していくつかの方法を試しましたが、常に次のエラーが発生します。

sc-sini2csv: line 5: sintax error near `token' unexpected `CODIFICACAO=$(file --mime-encoding "$NOME_ARQ" | cut -d" " -f2)'
sc-sini2csv: line 5: `CODIFICACAO=$(file --mime-encoding "$NOME_ARQ" | cut -d" " -f2)'

エラーから、変数 $CODIFICACAO を割り当てるときに問題が発生することがわかります

私が調べた限りでは、STDOUT を変数に割り当てる方法は 2 つあります。

1- バッククォートを使用:

CODIFICACAO=`file --mime-encoding "$NOME_ARQ" | cut -d" " -f2`

また

2- $() を使用:

CODIFICACAO=$(file --mime-encoding "$NOME_ARQ" | cut -d" " -f2)

どちらも同じエラーになります。

私が書いたように、それはばかげているように見えますが、私はこのエラーに固執しています.....どんなヘルも大歓迎です!!!

PS: ターミナル (bash スクリプトの外部) から直接 $() またはバッククォートを使用すると動作しますが、シェル スクリプトで使用する必要があります。

時間内に:私はbashシェルでubuntuを使用しています

前もって感謝します !!!シルビオ

4

2 に答える 2

4

セミコロンがありません:

for NOME_ARQ in *.txt; do
于 2012-11-06T00:52:08.200 に答える
1

do新しい行にある必要があります:

for NOME_ARQ in *.txt
  do
于 2012-11-06T00:52:51.027 に答える