重命名文件名在命令提示符下工作,但在bash脚本中不起作用

重命名文件名在命令提示符下工作,但在bash脚本中不起作用,bash,unix,Bash,Unix,我试图在bash脚本中重命名命令。例如,如果我跑步: echo /home/scientist/mySalesData/campaignData_1482386214.24417.csv | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash 它工作正常,并为我提供了目录/home/scientist/mySalesData/中的activitydata.csv 但是,如果我将其放入bash脚本中,如下所示: for f in /h

我试图在bash脚本中重命名命令。例如,如果我跑步:

echo /home/scientist/mySalesData/campaignData_1482386214.24417.csv  | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash   
它工作正常,并为我提供了目录
/home/scientist/mySalesData/
中的activitydata.csv

但是,如果我将其放入bash脚本中,如下所示:

for f in /home/scientist/SalesData/*; do
if [ -f "$f" ]; 
  cp "$f" /home/scientist/SalesForce/SalesData/Backups/                                                                
  echo $f$ | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash |        
fi 
done 
我得到:

mv: cannot stat '/home/scientist/SalesData/campaignData_1482386214.24417.csv$': No such file or directory          

任何帮助都将不胜感激

这里有一个尾随的
$

echo $f$
删除(并引用扩展):

您也可以在此处使用字符串:

sed ... <<<"$f"

sed 您在此处有一个尾随的
$

echo $f$
删除(并引用扩展):

您也可以在此处使用字符串:

sed ... <<<"$f"
sed。。。
%
是操作员


%
是操作员。

您有一个简单的打字错误。将
$f$
更改为
“$f”
,然后添加缺少的
,然后添加
。我在深夜这么做会得到什么。你有一个简单的打字错误。将
$f$
更改为
“$f”
,然后添加缺少的
,然后添加
。我在深夜这么做会得到什么。哦,太好了。从那个接线员那里学到了一些新东西。哦,太好了。从那个接线员那里学到了一些新东西。