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 分配给变量的方法:

1-使用反引号:

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

或者

2-使用$():

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

他们都会给出同样的错误。

正如我所写,这似乎很愚蠢,但我被这个错误困住了......任何地狱将不胜感激!

PS:直接从终端(在 bash 脚本之外)使用 $() 或反引号将起作用....但我需要将它放入 shell 脚本中。

及时:我正在使用带有 bash shell 的 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 回答