我首先编写了脚本 - 从foofile文件中取出一行。然后添加一个日期 tron _ * .csv文件,然后gzip文件,然后scp该文件。
为了让我将日期添加到文件中,我从文件中剪切后缀 - 我切断了 从文件名中输入csv,然后将日期附加到新文件名,然后重新附加 " dot csv"到文件名,然后我将$ i文件转换为新名称然后gzip和 scp文件。
#!/bin/bash
set -x
sed -i '/D,642,0642,ZIPPY,FOO,,M,,S,S,FARFEGNUGEN,213,213,/d' ./tron_foot.csv
today=$(/bin/date +%Y%m%d)
#today=20141024
echo $today
for i in tron_foott.csv tron_stk.csv
do
cut_suffix=$(printf ${i%%.*})
cp -p $i $cut_suffix.$today.csv
gzip -f $cut_suffix.$today.csv
sleep 2
scp -r -p $cut_suffix.$today.csv.gz casper_bank@casper.bank.com:/data/DROPBOX/
sleep 2
done
问题是在我切断后缀后脚本不再看到文件。
我认为它不会那样工作--cp语句看不到原来的名字 的文件。我认为切断文件的后缀只是装饰性的。我没有 认为它改变了$ i的价值 - 我认为这只是改变了名称,而不是内容 该文件。
caper_user@casper_server:~$ /data/gprocess_cboe_tron_files
+ sed -i /D,642,0642,BEAR,TWIT,,M,,S,S,FARFEGNUGEN,213,213,/d /data/gtron_mmstk.csv
++ /bin/date +%Y%m%d
+ today=20141028
+ echo 20141028
20141028
+ for i in tron_mmet.csv tron_mmstk.csv
++ printf tron_mmet
+ cut_suffix=tron_mmet
+ cp -p tron_mmet.csv tron_mmet.20141028.csv
cp: cannot stat `tron_mmet.csv': No such file or directory
+ gzip -f tron_mmet.20141028.csv
gzip: tron_mmet.20141028.csv: No such file or directory
+ sleep 2
+ scp -r -p tron_mmet.20141028.csv.gz casper_bank@casper.bank.com:/data/DROPBOX/
tron_mmet.20141028.csv.gz: No such file or directory
+ sleep 2
+ for i in tron_mmet.csv tron_mmstk.csv
++ printf tron_mmstk
+ cut_suffix=tron_mmstk
+ cp -p tron_mmstk.csv tron_mmstk.20141028.csv
cp: cannot stat `tron_mmstk.csv': No such file or directory
+ gzip -f tron_mmstk.20141028.csv
gzip: tron_mmstk.20141028.csv: No such file or directory
+ sleep 2
+ scp -r -p tron_mmstk.20141028.csv.gz casper_bank@casper.bank.com:/data/DROPBOX/
tron_mmstk.20141028.csv.gz: No such file or directory
+ sleep 2
caper_user@casper_server:~$ cd /data/g
〜
答案 0 :(得分:2)
简单的解释是文件首先不存在。
我注意到您的代码显示./
,但您的成绩单显示/data/g
表示已成功完成的一项操作。
也许你需要意识到相对路径是从调用脚本的进程的当前工作目录中解析出来的。换句话说,如果您在/tmp
并且运行/home/you/script
,则脚本中的文件名./tron_mmstk.csv
将解析为/tmp/tron_mmstk.csv
,而不是/home/you/tron_mmstk.csv
。
顺便说一下,你应该正确地双引所有包含文件名的变量,但这似乎不是问题所在。
此外,printf
是多余的。
cut_suffix=${i%.csv}
最后,sleep
似乎没有任何用处。
答案 1 :(得分:2)
你的路径已关闭。您在某些地方使用完整路径,但在其他地方使用(隐式)相对路径。
tron_mmet.csv
~caper_user
中不存在</data
,但~caper_user
中存在{{1}},但脚本正在从{{1}}运行并使用裸文件名。
答案 2 :(得分:1)
cp: cannot stat `tron_mmet.csv': No such file or directory
$i
的值未发生变化。工作目录中根本没有名为tron_mmet.csv
的文件。脚本是否在正确的目录中执行?