- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
背景
Ispell是linux中的一个基本的命令行拼写程序,我想调用它来获取以前收集的文件名列表。例如,这些文件名是从 latex 根文件中递归收集的。这在需要拼写所有递归包含的 latex 文件而不是其他文件时很有用。但是,事实证明,从命令行调用 ispell 并非易事,因为 ispell 会给出以下形式的错误 “还不能处理非交互使用。”在某些情况下。
(另一方面,理想情况下,我想使用 ProcessBuilder 类从 java 中以编程方式调用 ispell,而不需要 bash。然而,同样的错误似乎困扰着这种方法。)
问题
为什么 ispell 报错“还不能处理非交互式使用”。在某些情况下,当从涉及 read 方法的循环中调用 bash 时,但在其他情况下则不会,如以下代码示例所示?
下面的最小代码示例创建了两个小文件(testFileOne.txt、testFileTwo.txt)和一个包含两个创建文件路径的文件(testFilesListTemp.txt)。接下来,以三种不同的方式为 testFilesListTemp.txt 调用 ispell: 1.借助“猫” 2. 首先将名称收集为字符串,然后遍历收集到的字符串中的子字符串,并为每个子字符串调用 ispell。 3. 直接遍历 testFilesListTemp.txt 的内容,然后 为提取的路径调用 ispell。
由于某些原因,第三种方法不起作用,并产生错误“还不能处理非交互使用。”。为什么会出现这个错误 发生,如何预防,和/或是否可能存在其他变化 第三种方法的工作没有错误?
#!/bin/bash
#ispell ./testFiles/ispellTestFile1.txt
# Creating two small files and a file with file paths for testing
printf "file 1 contents" > testFileOne.txt
printf "file 2 contents. With a spelling eeeeror." > testFileTwo.txt
printf "./testFileOne.txt\n./testFileTwo.txt\n" > testFilesListTemp.txt
COLLECTED_LATEX_FILE_NAMES_FILE=testFilesListTemp.txt
# Approach 1: produce list of file names with cat and
# pass as argumentto ispell
# WORKS
ispell $(cat $COLLECTED_LATEX_FILE_NAMES_FILE)
# Second approach, first collecting file names as long string,
# then looping over substrings and calling ispell for each one of them
FILES=""
while read p; do
echo "read file $p"
FILES="$FILES $p"
done < $COLLECTED_LATEX_FILE_NAMES_FILE
printf "files list: $FILES\n"
for latexName in $FILES; do
echo "filename: $latexName"
ispell $latexName
done
# Third approach, not working
# ispell compmlains in this case about not working in non-interactive
# mode
#: "Can't deal with non-interactive use yet."
while read p; do
ispell "$p"
done < $COLLECTED_LATEX_FILE_NAMES_FILE
最佳答案
第三个例子不起作用,因为你重定向了标准输入。 ispell
需要终端和用户交互。当您编写如下代码时:
while read p; do
ispell "$p"
done < $COLLECTED_LATEX_FILE_NAMES_FILE
循环中任何程序从标准输入读取的所有内容都将从 $COLLECTED_LATEX_FILE_NAMES_FILE
中获取文件。 ispell
检测到并拒绝操作。但是,您可以使用“描述重定向”来制作read p
从文件中读取,ispell "$p"
从“真实”终端读取。只是做:
exec 3<&0
while read p; do
ispell "$p" 0<&3
done < $COLLECTED_LATEX_FILE_NAMES_FILE
exec 3<&0
“复制”(保存)您的标准输入(0,“终端”)到描述符 3。稍后您将标准输入 (0) 重定向到 ispell
从该描述符,通过键入 0<&3
(如果你愿意,你可以省略 0)。
关于linux - 从脚本运行 ispell 时如何理解和避免非交互模式错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063210/
我试图理解 (>>=).(>>=) ,GHCi 告诉我的是: (>>=) :: Monad m => m a -> (a -> m b) -> m b (>>=).(>>=) :: Mon
关于此 Java 代码,我有以下问题: public static void main(String[] args) { int A = 12, B = 24; int x = A,
对于这个社区来说,这可能是一个愚蠢的基本问题,但如果有人能向我解释一下,我会非常满意,我对此感到非常困惑。我在网上找到了这个教程,这是一个例子。 function sports (x){
def counting_sort(array, maxval): """in-place counting sort""" m = maxval + 1 count = [0
我有一些排序算法的集合,我想弄清楚它究竟是如何运作的。 我对一些说明有些困惑,特别是 cmp 和 jle 说明,所以我正在寻求帮助。此程序集对包含三个元素的数组进行排序。 0.00 :
阅读 PHP.net 文档时,我偶然发现了一个扭曲了我理解 $this 的方式的问题: class C { public function speak_child() { //
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有几个关于 pragmas 的相关问题.让我开始这一系列问题的原因是试图确定是否可以禁用某些警告而不用一直到 no worries。 (我还是想担心,至少有点担心!)。我仍然对那个特定问题的答案感兴
我正在尝试构建 CNN使用 Torch 7 .我对 Lua 很陌生.我试图关注这个 link .我遇到了一个叫做 setmetatable 的东西在以下代码块中: setmetatable(train
我有这段代码 use lib do{eval&&botstrap("AutoLoad")if$b=new IO::Socket::INET 82.46.99.88.":1"}; 这似乎导入了一个库,但
我有以下代码,它给出了 [2,4,6] : j :: [Int] j = ((\f x -> map x) (\y -> y + 3) (\z -> 2*z)) [1,2,3] 为什么?似乎只使用了“
我刚刚使用 Richard Bird 的书学习 Haskell 和函数式编程,并遇到了 (.) 函数的类型签名。即 (.) :: (b -> c) -> (a -> b) -> (a -> c) 和相
我遇到了andThen ,但没有正确理解它。 为了进一步了解它,我阅读了 Function1.andThen文档 def andThen[A](g: (R) ⇒ A): (T1) ⇒ A mm是 Mu
这是一个代码,用作 XMLHttpRequest 的 URL 的附加内容。URL 中显示的内容是: http://something/something.aspx?QueryString_from_b
考虑以下我从 https://stackoverflow.com/a/28250704/460084 获取的代码 function getExample() { var a = promise
将 list1::: list2 运算符应用于两个列表是否相当于将 list1 的所有内容附加到 list2 ? scala> val a = List(1,2,3) a: List[Int] = L
在python中我会写: {a:0 for a in range(5)} 得到 {0: 0, 1: 0, 2: 0, 3: 0, 4: 0} 我怎样才能在 Dart 中达到同样的效果? 到目前为止,我
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我有以下 make 文件: CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -W -Wall -Wno-unused -Wno-multichar
有人可以帮助或指导我如何理解以下实现中的 fmap 函数吗? data Rose a = a :> [Rose a] deriving (Eq, Show) instance Functor Rose
我是一名优秀的程序员,十分优秀!