【问题标题】:Storing directory as a variable for later use in linux script将目录存储为变量以供以后在 linux 脚本中使用
【发布时间】:2012-04-13 05:22:30
【问题描述】:

在我的脚本中,我将文件的位置(路径)作为变量保存。

例如文件A

其内容的一个例子是

fileA=/usr/anotherfolder/somefold/"filenamehere"

但是,当我在脚本中对文件调用命令时,例如:

猫 $fileA

cat "$fileA"

我收到一条错误消息,指出文件或目录不存在。如果我回显 $fileA 以查看输出是什么,然后从终端手动运行 cat,它工作正常,不知道出了什么问题。有什么帮助吗?

一些调试信息:

  • fileA='/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"'
  • echo '/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"' /home/jacob/Desktop/CS35L/WORK/2/hw/test3/“新”
  • '['''!' -r '/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"' ']'

对于这些特定的行

检查可读文件

echo $fileA
if [ ! -r "$fileA" ]
then
    o=`expr $o + 1`
    echo "$fileA not readable."
    continue    
fi

【问题讨论】:

  • 试试cat "$fileA"。祝你好运。
  • 试过了,结果没有改变
  • $fileA 是否包含特殊字符?
  • 可以,但我在这种情况下提供了正确的转义字符,失败案例的示例是:/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"filecheck "
  • 请发布命令echo $fileA的结果

标签: linux bash


【解决方案1】:

如果文件名是new(不是"new"),则更改

fileA='/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"'

fileA=/home/jacob/Desktop/CS35L/WORK/2/hw/test3/new

【讨论】:

  • 我不相信我添加了那些单引号,知道它们是如何到达那里的吗?他们没有出现在回声输出中?我以为这只是调试输出语法。
  • @jsjwooooooo 我不明白你的调试信息。
  • 我刚刚用 -xv 命令运行了脚本,结果就是这样
  • 即使只是新的,使用“新”有什么问题吗?
  • new"new"'...' 内部是不同的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 2020-04-07
  • 2013-03-12
  • 1970-01-01
  • 2012-02-29
  • 2021-10-11
相关资源
最近更新 更多