Почему в исходном файле должен быть установлен бит выполнения?

bash script

Я прочитал, что оригинальный ответ на самом деле не то, что вы ищете. Пожалуйста, ознакомьтесь со следующим сценарием. Это работает только тогда, когда вы заранее знаете количество элементов входного файла:

#!/bin/bash

infile=/home/wokie/duck.txt
outfile=/home/wokie/duck2.txt
# Define the amount of elements/columns in a row
maxelem=28

# Read the file, strip all newline characters and create one big variable
inputOneline=$(cat $infile | dos2unix | tr -d '\n')

count=0
# Read through the variable and split elements
for element in ${inputOneline//|/ }
  do
  if [ $count -lt $maxelem ]
    then
      # Write element to outfile while suppresing newline (-n) 
      echo -n "$element|" >> $outfile
      count=$[$count +1]
    else
      # Write newline to outfile when maximum elements is reached
      echo >> $outfile
      count=0
  fi
done

Вся идея состоит в том, чтобы сначала удалить все новые строки, после этого новый файл будет собран вместе с новыми строками в нужных местах.

dos2unix

Скрипт использует отличный инструмент под названием dos2unix. Запустив dos2unix только с именем файла в качестве параметра, он автоматически преобразует входной файл (Windows) в формат unix.

Если запустить инструмент с параметром -id, подсчитывается количество случаев CRLF, например:

[test@testsystem ~]$ dos2unix -id /home/wokie/test2.txt 5 /home/wokie/test2.txt

В файле примера 5 случаев.

Вы можете найти инструмент dos2unix здесь: https://sourceforge.net/projects/dos2unix/. Большинство дистрибутивов предоставляют dos2unix в стандартной комплектации или предоставляют возможность установки с помощью apt-get или dnf.

1
17.03.2017, 16:07
1 ответ

Исходный файл C не может быть исполняемым. Иногда это может произойти, если файл был перенесен из операционной системы, отличной от Unix, или через нее.

Вы можете безопасно удалить бит выполнения, если хотите:

$ chmod a-x secp256k1.c
6
27.01.2020, 23:16

Теги

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