【发布时间】:2023-04-03 03:11:01
【问题描述】:
我想通过 crontab 运行一个 shell 脚本,该脚本执行某些操作,然后运行另一个 shell 脚本,该脚本检查某个文件夹中的某些文件并为每个文件创建一个目录。 第一个脚本“my_crontab.sh”如下所示:
#!/bin/bash
cd /home/myusername/myfolder
python mypythonscript.py
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/myusername/myfolder
bash start.sh
Crontab 执行“my_crontab.sh”并且“start.sh”也被调用(我从 crontab 日志文件中知道)
这就是“start.sh”的样子:
#!/bin/bash
echo "start.sh started"
if [ $(find -maxdepth 1 -type f | wc -l) -ne 0 ];
then
for i in *.jpg
do
folder="${i/.jpg/}"
mkdir ../folders/$folder
done
else
echo "nothing to do"
fi
现在我收到错误:
/bin/sh: 7: /home/myusername/myfolder/start.sh: Bad substitution
我已经尝试过folder=${ i:0:-4 },但这也不起作用。
任何想法如何解决它?
【问题讨论】:
-
您的脚本使用
sh运行,并且不支持${i/.jpg/}之类的bash 代码(sh之于bash就像C 之于C++)。您应该将my_crontab.sh更新为#!/bin/bash。更新start.sh是不够的。除了 David C. Rankin 提到的间距问题之外,还要修复此问题