2011-02-13 30 views
0

我试图通过使用代码的临时文件切换两个文件的内容;交换shell中的两个文件

#!/bin/bash 

... 

mv $FILE1 $TEMP 
mv $FILE2 $FILE1 
mv $TEMP $FILE2 

当我运行它,它返回每个行号

swap.sh:第18行:MV:找不到命令提前

感谢。

+0

你没有从`cron`运行这个脚本,对吗? Cron没有设置任何PATH,所以你必须在脚本中设置它,最好使用`PATH = $(/ usr/bin/getconf PATH)` – Jens 2012-05-16 15:09:34

回答

4

也许你正在使用shell参数取消设置PATH变量。

尝试增加完整路径命令,例如

/bin/mv ... 

使用命令,你可以弄清楚什么是正确的路径:

which mv 

或者你可以尝试在脚本的开头设置PATH ,例如:

PATH =/bin:/ usr/bin:/ sbin:/ usr/sbin

这是依赖于系统的。您可以通过在您的shell中运行

echo $PATH 

来查看默认路径。

+0

用/ usr/bin/getconf可以更好地调查系统的默认PATH PATH`。其他一切可能会给你一个或多或少的随机目录列表:-) – Jens 2012-05-16 15:05:24

0

的POSIXy方式与一条合适的路径来初始化脚本是

PATH=$(/usr/bin/getconf PATH) 

通过一些随机的家伙谁拥有安装外壳的第一个命令invokation之前将这个,你应该设置保护,惊喜用他的PATH应该看起来像什么的想法的配置文件。

如果您需要其他目录中的程序,例如,您可能需要扩充

PATH=$(/usr/bin/getconf PATH):/usr/local/bin