2014-01-31 125 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