次の行数でファイル名を指定しようとしていますcrontab
。
* * * * * ~/script > "~/targetfile-$(rows-count).csv"
私はできます:
* * * * * ~/script > "~/targetfile-$(~/script | wc -l).csv"
しかし、スクリプトを2回実行するよりも優れていると思います。
助けてください?ありがとう
ベストアンサー1
ここでは、解釈のコマンドラインをcron
使用して、次のように指示できます。zsh
SHELL=/bin/zsh
* * * * * TMPPREFIX=~/.; (){ mv -- $1 ~/targetfile-$(($(wc -l < $1))).csv; } =(~/script)
つまり、=(...)
プロセス置換を使用してスクリプトの出力を一時ファイル(単に名前を変更するのではなく~
隠しファイルとして)に保存する場合、ここでは名前をターゲットファイルの名前に置き換える匿名関数にパラメータとして渡されます。/tmp
mv
あるいは、スクリプト出力を一時ファイルに提供することもできますwc -l
。
SHELL=/bin/zsh
* * * * * TMPPREFIX=~/.; (){ ~/script >&1 > $1 | wc -l | read n; mv -- $1 ~/targetfile-$n.csv; } =(:)