linux - 如何在 var 的末尾 append 双引号 (")

标签 linux bash append quote

<分区>

我正在重命名一堆包含空格的文件和目录。我有一个目录列表,例如:

"/usr/home/name/directory a/"
"/usr/home/name/directory b/"

等...

它们都用双引号括起来,这样我就可以使用 for 循环来处理它们。那部分工作正常。问题是我还有这样的文件:

"/usr/home/name/directory a/file a"
"/usr/home/name/directory b/file b"

等...

我需要验证文件所在的目录是否可写。所以要做到这一点,我从字符串中获取目录名:

dnam=$(dirname $1)

这在某种程度上是有效的。最终结果是我的最后一个双引号也被切断,导致:

"/usr/home/name/directory a
"/usr/home/name/directory b

等...

我需要最后的报价才能进入实际的重命名部分,但不知道该怎么做。我确定这是我忽略的简单事情。有人可以告诉我吗?

最佳答案

为了安全起见,请使用:

dnam=$(dirname "$1")

变量用双引号括起来。

您可以在该结果后 append 一个双引号:

dnam=$(dirname "$1")'"'

或一些等效的符号。但是,我怀疑您应该以不同的方式处理名称,而不是在值中使用双引号。也就是说,您可能有:

dir1="/usr/home/name/directory a"
file1="$dir1/file a"

然后当您需要将其中之一传递给命令时,将其用双引号引起来:

dnam=$(dirname "$file1")

cd "$dnam"

如果您要处理此类名称的列表,请使用数组,然后使用诸如以下的符号:

a=( "$dir1" "$dir2" )

ls -ld "${a[@]}"

关于linux - 如何在 var 的末尾 append 双引号 ("),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779403/

相关文章:

java - 执行java类时无法在linux服务器中添加jar

bash - RTNETLINK 回答 : Device or resource busy

javascript - 以数组的形式存储来自 append 表单数据的 php 变量

c - 追加到数组末尾

swift - 无法构建 Objective-C 模块 'SwiftGlibc'

linux - 在 Linux 中使用 wget 或其他命令获取整个域内容?

linux - 什么是meta-open嵌入式meta-linaro?

bash - 将标准输入参数传递给正在使用 gdb 调试的可执行文件

linux - 在不解压缩存档的情况下编辑文件

jQuery 方法追加 : why is the position of the function relevant in the case of multiple parameters?