2014-06-23 65 views
0

我是shell腳本編程的新手,我試圖執行一個讀取文本並執行POS標記的軟件。它要求輸入和輸出,可以在執行例子可以看出:循環中basename的問題

$ cat input.txt | /path/to/tagger/run-Tagger.sh > output.txt 

我試圖做的是不僅對文本執行這條線,但在一個特定的一組文本文件夾,並返回與輸入文件具有相同名稱的輸出文件。所以,我試圖做這個腳本:

#!/bin/bash 
path="/home/rafaeldaddio/Documents/" 
program="/home/rafaeldaddio/Documents/LX-Tagger/POSTagger/Tagger/run-Tagger.sh" 

for arqin in '/home/rafaeldaddio/Documents/teste/*' 
do 
out=$(basename $arqin) 
output=$path$out 
cat $arqin | $program > $output 
done 

我只有一個文件,試了一下,它的作品,但是當我嘗試不止一個,我得到這個錯誤:

basename: extra operand ‘/home/rafaeldaddio/Documents/teste/3’ 
Try 'basename --help' for more information. 

./scriptLXTagger.sh: 12: ./scriptLXTagger.sh: cannot create /home/rafaeldaddio/Documents/: Is a directory 

任何見解我做錯了什麼?謝謝。

+1

什麼'$ arqin'的調用'basename'前的價值?你應該引用你的變量,例如:'$(basename「$ arqin」)' – Biffen

回答

3

你不想讓身邊的格局報價,並提供您的變量:

for arqin in /home/rafaeldaddio/Documents/teste/* 
do 
    out=$(basename "$arqin") 
    output=$path$out 
    "$program" <"$arqin" >"$output" 
done