Почему я не могу сохранить вывод в файл с помощью команды, которая принимает входные данные как сам файл? [дубликат]

Creo que tenías la intención de hacer:

set -o filec
set -o noglob

setsin ninguna de las opciones establece los argumentos como parámetros del shell. deman mksh:

Options can be changed using the +-o option syntax, where option is the long name of an option, or using the +-letter syntax, where letter is the option's single letter name (not all options have a single letter name).

(Pero no puedo encontrar una opción de shell llamada filecen mksh, al menos.)

-2
30.09.2016, 03:35
2 ответа

Это очень распространенная ошибка.

Когда вы перенаправляете stdout или stderr для записи в файл, оболочка сначала усекает файл, чтобы подготовить его к записи. Таким образом, происходит примерно следующее:

  1. Ваша оболочка устанавливает stdin на newfile.ppm
  2. Ваша оболочка усекает newfile.ppm до длины 0
  3. Ваша оболочка устанавливает stdout на newfile.ppm
  4. Ваша оболочка запускает tr -d '\ n' . Как видите, на данный момент содержимое newfile.ppm уже удалено, поэтому читать нечего.

Чтобы обойти это, просто выведите вместо этого в другой файл. Затем вы можете переименовать его позже

0
28.01.2020, 05:18

Это сделает то, что вы хотите.

[stephan@stephan] ~ 
$ echo "meh                                    
" > file
[stephan@stephan] ~ 
$ cat file | tr -d '\n' > file ; cat file 
meh
-1
28.01.2020, 05:18

Теги

Похожие вопросы