相关疑难解决方法(0)

为什么我的 shell 脚本会因空格或其他特殊字符而阻塞?

或者,有关强大的文件名处理和在 shell 脚本中传递的其他字符串的介绍性指南。

我写了一个 shell 脚本,它在大多数情况下运行良好。但它在某些输入(例如某些文件名)上窒息。

我遇到了如下问题:

  • 我有一个包含空格的文件名hello world,它被视为两个单独的文件helloworld.
  • 我有一个带有两个连续空格的输入行,它们在输入中缩小为一个。
  • 前导和尾随空格从输入行中消失。
  • 有时,当输入包含其中一个字符时\[*?,它们会被一些文本替换,这实际上是文件的名称。
  • 输入中有一个撇号'(或双引号"),在那之后事情变得很奇怪。
  • 输入中有一个反斜杠(或者:我使用的是 Cygwin 并且我的一些文件名具有 Windows 样式的\分隔符)。

这是怎么回事,我该如何解决?

shell bash shell-script quoting whitespace

341
推荐指数
3
解决办法
32万
查看次数

将参数从一个命令传递到下一个命令

我正在尝试编写一个脚本来将我手动运行的两个单独的命令统一到一个单独的 bash 脚本中,然后我可以进行 cron。

第一个命令是对具有特定名称和大小的文件的简单查找

find /some/path -type f -name file.pl -size +10M
Run Code Online (Sandbox Code Playgroud)

这将生成几个匹配的文件及其完整路径。然后我手动将这些路径复制到 for 循环中作为下一个脚本的参数。

for path in /some/path/1/file.pl /some/path/2/file.pl /some/path/3/file.pl ; do perl /my/script.pl $path ; done
Run Code Online (Sandbox Code Playgroud)

似乎应该很容易将其放入单个 shell 脚本中,但发现它很困难。

linux shell arguments

4
推荐指数
1
解决办法
515
查看次数

标签 统计

shell ×2

arguments ×1

bash ×1

linux ×1

quoting ×1

shell-script ×1

whitespace ×1