我正在尝试在bash脚本中重命名命令。如果我跑了例如:
echo /home/scientist/mySalesData/campaignData_1482386214.24417.csv | sed 's/\(.*\)\(_.*\)/mv \"&" \"\1.csv\"/' | bash
它运行正常,并在目录/home/scientist/mySalesData/
中提供了campaignData.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
非常感谢任何帮助!
答案 0 :(得分:3)
cd "$srcdir"
for f in *; do
if [ -f "$f" ]; then
cp "./$f" "$dstdir/${f%_*}.csv"
fi
done
答案 1 :(得分:2)
您在此处有$
:
echo $f$
删除(并引用扩展名):
echo "$f"
你也可以在这里使用字符串:
sed ... <<<"$f"