リモートサーバーからファイルをコピーし、同じファイルを別の形式に変換するシェルスクリプトを作成しました。変換後、私はsedコマンドを使用してファイルを編集します。このスクリプトは手動で実行すると正常に実行されますが、crontabで実行されると失敗します。シェルスクリプトは手動で実行されますが、crontabで失敗します
crontabエントリは次のとおりです。 */1 * * * * /script/testshell.sh以下
されたシェルスクリプトコード:
#!/bin/bash
file="/script/test_data.csv" if [ -f "$file" ] then
echo " file is present in the local machine " else
echo " file is not present in the local machine "
echo " checking the file is present in the remote server "
ssh [email protected] 'if [ -f /$path ]; then echo File found ; else echo File not found; fi' fi
if [ -f "$file"] then
rm -f test_data.csv fi
scp -i /server.pem [email protected]:/$path
file="/script/test_data.csv" if [ -f "$file" ] then
echo "$file found." else
echo "$file not found." fi
if [ -f "$file" ] then echo " converting csv to json format ....." fi
./csvjson.sh input.csv output.json
sed -e '/^$/d' -e 's/.*/&,/; 1 i\[' ./output.json | sed ' $ a \]'
hello.json
手動でスクリプトを実行した後、それは完璧に動作します。しかし、crontabのために働いていない。
どこでも絶対パスを使用してください。 –
ありがとう。今は働いています。私はどこにでも絶対的な道を与えました。 –
これはひどい考えです。スクリプトの最初にPATHを正しく設定してください。 –