在linux 下执行shell文件提示:No such file or directory,但这个路径明明是存在的,为啥呢?求指教?

2024-10-31 15:01:12
推荐回答(4个)
回答1:

这个问题应该出在find命令上,在脚本中你的路径“~/jre/log1”被保存在一个变量中$logPath

在脚本中:find $logPath -ctime +7这条命令,find把“~”当成普通字符,而不会解析为对应的home目录。

在命令行(shell环境下)环境下:为什么cd ~/jre/log1成功,是因为shell帮你解析“~”为对应的home目录了。

所以如果在脚本中使用find命令,且用“~”表示要使用当前用户home目录,可以结合eval命令使用:

#!/bin/bash

logpath=$(cat /tmp/test.txt) 获取带有~的路径
find $(eval echo $logpath) -name "*.txt" 使用eval计算表达式结果

回答2:

cat ~/jre/log...
用绝对路径
比如 cat /home/my/name/jre/log....

写脚本用相对路径是大忌啊

回答3:

如果你没进行chmod +x 你的脚本名的话,就用bash 你的脚本名字来执行,如果你执行过了,就使用./你的脚本名来执行,

前提是你的脚本OK

回答4:

你理解错了,除非特别加上,否则home directory不在$PATH里。用echo $PATH试试就清楚了。