无法将stdout变为变量

时间:2012-11-06 00:49:04

标签: shell

它看起来很傻......我不知道我做错了什么......

我需要将.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

提前致谢!!! 西尔维奥

2 个答案:

答案 0 :(得分:4)

你错过了一个分号:

for NOME_ARQ in *.txt; do

答案 1 :(得分:1)

do应该换行:

for NOME_ARQ in *.txt
  do