【发布时间】:2017-09-08 16:28:23
【问题描述】:
我目前正在使用供应商提供的软件,该软件试图处理将附件文件发送到另一个脚本,该脚本将从列出的文件中提取文本。当我们从外部源接收包含空格的文件时,脚本会失败,因为供应商提供的软件不会将文件名括在引号中 - 这意味着当运行文本提取脚本时,它会收到一个文件名,该文件名将在空间上分开并导致提取器脚本出错。我们无法编辑供应商提供的软件。
整个过程被设计成自动转移,所以有这个可以随意扔进齿轮的扳手是个问题。
我们正在尝试做的是在我们的文本提取器脚本中处理带空格的名称,因为这是我们可以控制的部分。在快速谷歌之后,似乎更改脚本的 IFS 值将是快速解决方案,但不幸的是,该脚本将在扩展程序已经破坏传入数据后生效。
我正在使用的脚本接受一个 -e 值、一个 -i 值和一个 -o 值。这些值是从供应商提供的脚本发送的,我无法对其进行编辑控制。
#!/bin/bash
usage() { echo "Usage: $0 -i input -o output -e encoding" 1>&2; exit 1; }
while getopts ":o:i:e:" o; do
case "${o}" in
i)
inputfile=${OPTARG}
;;
o)
outputfile=${OPTARG}
;;
e)
encoding=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
...
...
<Uses the inputfile, outputfile, and encoding variables>
我承认,这可能有一些我不完全理解的部分,这可能是一个简单的修复,但我的最终目标是能够提取所有包含 1 的 -o、-i 和 -e值,而不考虑每个部分中的空格。我可以在提取文件名值后处理引用脚本
【问题讨论】:
标签: linux bash shell scripting whitespace