Bash mv以交互方式工作,但不是通过脚本

Bash mv以交互方式工作,但不是通过脚本,bash,shell,Bash,Shell,在过去的四天里,我一直在讨论这个问题,并尝试尽可能多地修改代码,但都无济于事 问题是我的脚本的mv命令无效。我尝试用cp替换它,但没有改变任何东西 id="201910242020" touch -t "$year$month$day$hr$min" /tmp/wakeup_$id.call mv "/tmp/wakeup_$id.call" /var/spool/asterisk/outgoing/ cat /var/spool/asterisk/outgoing/wakeup_$id.cal

在过去的四天里,我一直在讨论这个问题,并尝试尽可能多地修改代码,但都无济于事

问题是我的脚本的
mv
命令无效。我尝试用
cp
替换它,但没有改变任何东西

id="201910242020"
touch -t "$year$month$day$hr$min" /tmp/wakeup_$id.call
mv "/tmp/wakeup_$id.call" /var/spool/asterisk/outgoing/
cat /var/spool/asterisk/outgoing/wakeup_$id.call
假设
$year$month$day$hr$min
为“201910242020”

如果我从脚本中取出相同的代码行,并将其粘贴到终端中,它就会工作。文件将被移动

当该命令作为脚本的一部分运行时,除
mv
之外的所有行都会执行,无论出于何种原因,
mv
都不起作用,这会导致
cat
命令抛出文件不存在的错误。它不存在,因为它从未被移动过

为什么会这样?我以交互方式重新创建了脚本中使用的$id变量,并粘贴了同一行代码,它以交互方式工作。我想不出为什么它在编写脚本的时候不会出现

当我在脚本中添加
set-x
并使用
mv
的路径时,我得到:

/home/com/noc.sh: line 832: /home/com/.bash_profile: No such file or directory
+ /usr/bin/mv -v /tmp/wakeup_5644201910251537.call /var/spool/asterisk/outgoing/
/home/com/noc.sh: line 842: /usr/bin/mv: No such file or directory

这些变量中有很多是没有定义的,所以请做一个比较。(开始时,如果时间戳不重要,只需将其完全移除即可。)同时从脚本内部发布
type-a mv
的输出。@wjandrea mv is/bin/mv@wjandrea我不知道时间戳是否重要。我不认为是这样,但是为了安全起见,我把它放在了里面。我注意到
mv
命令在
/tmp/wakeup\u$id.call
中添加了双引号,但是
touch
命令没有。让这两条线保持一致可能是值得的。(从您分配给
id
)的位置删除双引号也是值得的)@InterLinked:the
mv
默默地拒绝工作,根本不会发生。它至少会输出一条错误消息。是否有一个同名的shell函数,即shadowing/usr/bin/mv?我还将用
/usr/bin/mv-v
替换
mv
,并且由于偏执,我还将在启用
set-x
的情况下运行脚本。