我在 AIX 中遇到一个脚本问题,但我找不到错误。我想在两个目录之间复制文件,但首先检查这些目录是否存在。我正在做的是这样的:
PATH=/home/fede/
PATH2=/home/prueba/
if [ -d $PATH ];
then
find $PATH -type f -exec cp {} $PATH2 \;
echo "se copiaron los archivos correctamente"
else
echo "no existe"
fi
但我收到了这条消息:./scriptTB[5]: find: not found. se copiaron los archivos correctamente
。最后一行用西班牙语写着“文件已正确复制”。脚本的名称是scriptTB
。
我之前需要放什么东西吗find
?看来问题出在 find
。
答案1
$PATH
是一个默认环境变量,它告诉您的系统在哪里可以找到其程序二进制文件(例如find
您尝试使用的程序),因此您应该为该变量使用不同的名称。我敢打赌您正在覆盖系统的$PATH
,现在您的系统找不到该find
程序。试试这个,看看是否有效。
答案2
PATH
恰好是 shell 用于定位可执行文件的环境变量。如果取消设置或更改它,shell 可能找不到诸如find
或 之类的命令cp
。
如果在脚本中使用小写变量名会更好。它们与重要环境变量发生冲突的可能性较小。
在这种情况下,您可以使用source_dir
和target_dir
,例如,它的另一个好处是为读者提供一些文档。