簡體   English   中英

bash腳本的路徑或我的文件出現問題

[英]issue with path or with my files with bash scripting

挫折。

我昨天發布了這個問題,我最終刪除了它,因為我認為當晚可以給我一些喘息的機會,並幫助我找到答案。

今天早上我嘗試了新事物,但是不,我被卡住了。

我有以下在/home/appseuro上運行的腳本

有關信息: datenow=$(date +%Y%M%d)

for rep in $(ls -l /home/appseuro/ | grep "^d" | awk '{print $10}' | sed 's/\///g'); do
 for file in $(ls /home/appseuro/"$rep"/"$datenow"/*.tsv); 
  do /home/appseuro/trans.sh < /home/appseuro/"$rep"/"$datenow"/"$file" > /home/appseuro/"$rep"/"$datenow"/"${file%.*}v1.${file##*.}" 
  ; done ;done

此循環的目標應為以下內容。 對於/home/appseuro/中的每個文件夾,以及這些文件夾中以及$datenow文件夾中的每個.tsv文件,我將調用腳本trans.sh ,在其中將.tsv文件用作輸入並將它們放在不同文件的輸出。

運行它后,出現以下錯誤:

/home/appseuro/mens_actu/20140402//home/appseuro/mens_actu/20140402/ek_manu_j.csv: No such file or directory

如果我在/home/appseuro/mens_actu/20140402 ,則以下版本

for file in *.tsv; 
 do /home/appseuro/trans.sh < "$file" > "${file%.*}v1.${file##*.}" 
; done 

上面的腳本正在執行第一個腳本的操作,但是沒有檢查文件夾,一切正常!

在處理了其他問題2個星期后,我想從這個問題上脫穎而出。

如果有人可以解釋原因。

不便之處,敬請原諒

最好。

這是您真正想要做的嗎?

datenow=$(date +%Y%m%d)
for file in /home/appseuro/*/"${datenow}"/*.tsv; do
    [ -e "${file}" ] || continue
    dir=${file%/*}
    filename=${file##*/}
    /home/appseuro/trans.sh < "${file}" > "${dir}/${filename%.*}v1.${filename##*.}"
done

請注意,我將date格式從%Y%M%d更改為%Y%m%d因為它看起來像是拼寫錯誤( %M是分鍾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM