![crontabから呼び出されたときにのみ「構文エラー:終了していない引用文字列」が発生する[重複]](https://linux33.com/image/170841/crontab%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AE%E3%81%BF%E3%80%8C%E6%A7%8B%E6%96%87%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9A%E7%B5%82%E4%BA%86%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E5%BC%95%E7%94%A8%E6%96%87%E5%AD%97%E5%88%97%E3%80%8D%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%5B%E9%87%8D%E8%A4%87%5D.png)
なぜこのエラーが発生しますか?
/bin/sh: 1: Syntax error: Unterminated quoted string
これはいつ呼び出されますか/etc/crontab
?
19 2 * * * root for f in $(cat /home/rubo77/list); do date +"%y-%m-%d %T">"$f".datefile; done
リストには既存のディレクトリへのパスのみが含まれています。これは私のcrontabの最初の行です:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Bashコンソールからコマンドラインを呼び出すとfor
エラーは発生しません。
答え1
%
この兆候を避けて逃げなければなりません。
次の関連質問をご覧ください。cronタブタスクで「日付」を実行する方法は?
あなたはそれを修正することができます
sed -i 's/%/\\%/g' /etc/crontab