2014-01-31 147 views
2

讀線我有一個文件paths.txtShell腳本:在文件

/my/path/Origin/.:your/path/Destiny/. 
/my/path/Origin2/.:your/path/Destiny2/. 
/... 
/... 

我需要一個腳本CopyPaste.sh使用文件paths.txt到的所有文件複製到OriginX DestinyX

類似的東西:

#!/bin/sh 

while read line 
do 
     var= $line | cut --d=":" -f1 
     car= $line | cut --d=":" -f2 
     cp -r var car 

done < "paths.txt" 
+0

當你在執行'var = command'時,'var = $(command)'的語法被解釋爲執行'var'命令,並帶有'='和'command'參數「。 – fedorqui

回答

3

使用翻譯功能:在同去tr命令&申請cp命令!

#!/bin/sh 

while read line; do 
    cp `echo $line | tr ':' ' '` 
done < "paths.txt" 
+0

對不起,這並不在我的腳本工作 – user3228279

+0

有什麼錯誤你眼看 – 2014-02-05 14:53:49

+0

如果非ksh外殼其反引號相關的,嗯,你可以用 CP $嘗試(回聲$線| TR?「:」「」 ) – 2014-02-05 14:54:54

2

您需要使用command substitution得到命令的輸出到一個SHEL ●變量:

#!/bin/sh 

while read line 
do 
     var=`echo $line | cut --d=":" -f1` 
     car=`echo $line | cut --d=":" -f2` 
     cp -r "$var" "$car" 
done < "paths.txt" 

雖然你的腳本可以使用read -d被簡化:

while read -d ":" var car; do 
    cp -r "$var" "$car" 
done < "paths.txt" 
+2

似乎缺少一行$ cp -r「var」「car」 而且我沒有使用'while read -d ....'得到正確的值 – 2014-01-31 12:20:24

+0

是的,感謝提醒。現在修復它。 – anubhava