命令未找到bash脚本中的错误

Pkp*_*Pkp 5 bash

我写了一个bash脚本.它基本上根据输入参数获取三个路径,然后获取路径中的imagename/filename.

像:
我提供:

AA=/home/user
Run Code Online (Sandbox Code Playgroud)

然后它使用find命令获取
/home/user/dir2/images/dir/tellmeimage1fun.bin

最后,我必须将tellmeimage1fun.bin作为输出.

脚本:

#!/bin/bash  

echo "arg0 n/k/d"  

AA=$1  
CC=$3  

PATH1="`find $AA/dir2/images/dir/ -name *image1*.bin`"  
PATH2="`find $AA/dir2/images/dir/ -name *bimage2*.bin`"  
PATH3="`find $AA/dir2/images/dir/ -name *cimage3*.bin`"  

if [ $CC = "n" ] ; then  
    PATH=$PATH1  
elif [ $CC = "k" ] ; then  
    PATH=$PATH2  
else  
    PATH=$PATH3  
fi  

#Getting filename name from path:  
IMG="`ls $PATH | cut -d "/" -f6`"

OUTPUT:  
/users/prasapat/bin/sl5: line 22: ls: command not found  
/users/prasapat/bin/sl5: line 22: cut: command not found  
Run Code Online (Sandbox Code Playgroud)

如果我给ls提供完整的路径并切断它们的工作.但我不想为脚本中的所有命令执行此操作.如果我删除最后一行并回显PATH变量,那就完全没问题了.只有在添加最后一个命令后,才能看到问题.
如果我做了任何明显的错误,请帮助并告诉我.

San*_*dri 15

问题是,如果在调用时没有使用完整路径,则重新定义bash查找的PATH变量以查找二进制文件.

您应该将bash脚本中的PATH更改为MYPATH或类似的东西,这样它就不会破坏已经存在的环境变量.

如果您不知道PATH变量是什么,可以查看维基百科的文章

  • 更好的解决方案是永远不要对任何私有变量使用大写字母。大写字母保留给系统变量;使用小写字母可确保您不会意外地使用您尝试的下一个变量名称来破坏其他系统变量。另请参阅/sf/ask/47113881/ Correct-bash-and-shell-script-variable-capitalization (5认同)