簡體   English   中英

Bash腳本從文件中讀取目錄,然后將其CD失敗

[英]Bash script to read directories from file and then cd into them failing

我試圖在Mac上編寫一個bash腳本,該腳本讀取文件的內容,並使用讀取的每一行來組裝路徑,然后將其插入cd並在其中執行一些命令。 這是我嘗試的腳本:

#!/bin/bash
repo="$HOME/sp16-cs233"
cat file.txt | while read line
do
        cd $repo/$line
        #do some stuff here
done

該文件包含位於回購路徑下的文件夾名稱。 當我嘗試運行此命令時,出現以下錯誤:

wirelessprvnat-172-17-237-248:Honors adelejjeh$ ./script.sh 
: No such file or directorysers/adelejjeh/sp16-cs233/albers3
: No such file or directorysers/adelejjeh/sp16-cs233/jablum2
: No such file or directorysers/adelejjeh/sp16-cs233/iwchen2
: No such file or directorysers/adelejjeh/sp16-cs233/durg2
: No such file or directorysers/adelejjeh/sp16-cs233/hgao17
: No such file or directorysers/adelejjeh/sp16-cs233/agoel9
: No such file or directorysers/adelejjeh/sp16-cs233/eshoag2
: No such file or directorysers/adelejjeh/sp16-cs233/jinglim2
: No such file or directorysers/adelejjeh/sp16-cs233/gluo2
: No such file or directorysers/adelejjeh/sp16-cs233/ypark92
: No such file or directorysers/adelejjeh/sp16-cs233/hequ2
: No such file or directorysers/adelejjeh/sp16-cs233/dssheph2

由於某種原因,當腳本運行時,路徑發生了錯誤。 有任何想法嗎?

file.txt具有Windows行尾字符; 這些行以\\r\\n (CR-LF)而不是\\n終止。 Bash在行末不忽略\\r ,這意味着它將成為傳遞給cd命令的路徑名的一部分。 結果,該命令將失敗。 此外,錯誤消息中包含\\r ,這使得它更難閱讀。

在目錄列表上運行dos2unix (或等效文件)應該可以解決此問題。

暫無
暫無

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

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