将3个命令重写为一个可以在cron上运行的命令或脚本

时间:2011-05-24 00:02:05

标签: ruby shell

我目前正在使用3种不同的命令来实现我下载zip,解压缩,将txt文件转换为utf8然后将csv转换为json的目标!

首先我有:

wget https://www.example.com/example.zip -O temp.zip; unzip -o temp.zip; rm temp.zip

哪个好,但问题是如何重命名提取的文件,以便每次为下一个进程重命名,因为它每天都可以在zip中使用不同的名称?接下来,我根据将ISO转换为utf8的文件名运行此脚本:

sh dir_iconv.sh example1.txt ISO8859-1 UTF-8

这是什么剧本:

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [ $# -lt 3 ]
then
echo "$0 dir from_charset to_charset"
exit
fi

for f in $1/*
do
if test -f $f
then
    echo -e "\nConverting $f"
    /bin/mv $f $f.old
    $ICONVBIN -f $2 -t $3 $f.old > $f
    rm -f $f.old
else
    echo -e "\nSkipping $f - not a regular file";
fi
done

最后我运行了一个ruby脚本csv2json - https://github.com/darwin/csv2json - 调用如下(管道分隔)给我一个json输出:

csv2json -s '|' example1.txt > example1.json

有没有一种简单的方法可以将其转换为可以调用的一个命令或脚本?

1 个答案:

答案 0 :(得分:3)

一个接一个地管理所有命令,并在必要时将它们放入shell脚本文件中。

wget -qO- https://www.example.com/example.zip | unzip | iconv -f ISO8859-1 -t UTF-8 | csv2json > example.json