Linux sh中没有这样的文件或目录错误,但该文件存在吗?

Linux sh中没有这样的文件或目录错误,但该文件存在吗?,linux,bash,ubuntu,Linux,Bash,Ubuntu,我正在运行一个命令,使用.shbash脚本检索日志文件的位置 呼应它打印: echo $rig /root/.forever/1cFY.log 但是当我试图读取这样存在的文件时: less $rig 我得到: /root/.forever/1cFY.log: No such file or directory 但是,如果我在没有.sh脚本的情况下手动输入文件名,它会工作 有什么想法吗?看起来您已经将grep配置为输出颜色。只需放下grep并使用awk: rig=$(forever list

我正在运行一个命令,使用.shbash脚本检索日志文件的位置

呼应它打印:

echo $rig
/root/.forever/1cFY.log
但是当我试图读取这样存在的文件时:

less $rig
我得到:

/root/.forever/1cFY.log: No such file or directory
但是,如果我在没有.sh脚本的情况下手动输入文件名,它会工作


有什么想法吗?

看起来您已经将grep配置为输出颜色。只需放下grep并使用awk:

rig=$(forever list | awk '/server.*root.*\.log/{print $8}')

strace-f less$rig可以帮助您找到发生了什么我以sudo sut的形式运行它输出为:execve/usr/bin/less、[less、\33[35m/root/.forever/1cFY.log\33[39…],[/*21 vars*/]=0似乎awk也在输出颜色,得到相同的错误更可能是转义序列来自永久。这就完成了->rig=$forever list | awk'/server.*root.*\.log/{print$8}'| sed-rs/\x1B\[[0-9]{1,2};[0-9]{1,2}.[m | K]//g@user3490755:您不能永远配置吗?我不知道这是什么,所以它不会首先打印这些转义序列?默认情况下,grep with-color仅当其标准输出是附加到TTY自动模式时才会输出颜色
rig=$(forever list | awk '/server.*root.*\.log/{print $8}')