Bash在变量中转义文件名中的空格
发布时间:2020-12-15 21:17:26 所属栏目:安全 来源:网络整理
导读:我对 Bash很新,所以这可能是微不足道的,但我只是没有得到它.我正试图逃避文件名中的空格.看一看.请注意,这是一个“工作示例” – 我得到的交错文件与空白页面可能更容易完成,但我在这里是关于空间. #! /bin/shfirst=truei=combined.pdfo=combined2.pdffor f
我对
Bash很新,所以这可能是微不足道的,但我只是没有得到它.我正试图逃避文件名中的空格.看一看.请注意,这是一个“工作示例” – 我得到的交错文件与空白页面可能更容易完成,但我在这里是关于空间.
#! /bin/sh first=true i=combined.pdf o=combined2.pdf for f in test/*.pdf do if $first; then first=false ifile="$f" else ifile=$i "$f" fi pdftk $ifile blank.pdf cat output $o t=$i i=$o o=$t break done 假设我有一个名为my file.pdf的文件(带空格).我希望ifile变量包含字符串combined.pdf“my file.pdf”,这样pdftk就可以将它用作两个文件参数 – 第一个是combined.pdf,第二个是我的file.pdf. 我已经尝试了各种转义方法(无论是否首先转义引号本身等),但在执行pdftk时它会不断分割my和file.pdf. 编辑:澄清:我正在尝试将一个变量中的多个文件名(作为多个参数)传递给pdftk命令.我希望它能识别两个文件名之间的区别,但不能在空格处撕开一个文件名. 解决方法
将多个参数放入单个变量中没有意义.相反,将它们放入一个数组:
args=(combined.pdf "my file.pdf"); 请注意,引用“my file.pdf”来保留空格. 您可以像这样使用数组: pdftk "${args[@]}" ... 这将向pdftk传递两个单独的参数. “${args [@]}”中的引号是必需的,因为它们告诉shell将每个数组元素视为一个单独的“单词”(即不分割数组元素,即使它们包含空格). 作为旁注,如果您使用像数组这样的bashisms,请将您的shebang更改为 #!/bin/bash (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |