Не пойму, кому встречный вопрос, но мне такой перевод нужен, чтобы бешевский скрипт превратить в нечитаемый бинарник, в качестве небольшой защиты кода от посторонних глаз. Поскольку в Си не соображаю вообще, в Паскале немного лучше, поэтому и хотелось перекинуть в его исходник.
Скажем, есть какой-то алгоритм сортировки или поиска на Pascal (или другом ЯП) и я могу представить, что он бы пригодился в каком-либо скрипте на Bash.
чтобы бешевский скрипт превратить в нечитаемый бинарник, в качестве небольшой защиты кода от посторонних глаз.
Это зачем ещё? Проприетарщина? Но тогда большой обфускации не добьешься, ведь будут видны порождаемые процессы. А вычисления всяких хэшей чисто на языке шелла - занятие специфическое
Ну и, кстати, слегка модифицированный пример оттуда:
uses BaseUnix, Unix;
var f : text;
begin
popen (f,'/bin/sh','W');
if fpgeterrno<>0 then
writeln ('error from POpen : errno : ', fpgeterrno);
writeln(f, '#!/bin/sh');
writeln(f, 'for i in {1..10}; do');
writeln(f, 'echo $i');
writeln(f, 'done');
pclose(f);
end.
Возможно, я и сам чего-то не понял. Я имел в виду перевод кода bash в код паскаля. Как в конвертерах c2pas, PtoC, например. Такой конвертер не нужен, если можно вызывать команды bash непосредственно в коде паскаля.
Ну, например, так:
...
var str: String;
Exit_status: integer;
...
str:='find /media/sda'+inttostr(i)+'/series/ -type d | sort | uniq >> '
+ExtractFilePath(Application.ExeName)+'series.dirs';
Exit_status:=fpsystem(str);
if Exit_status<>0
then
begin
Showmessage('Error '+inttostr(Exit_status)+' with find');
end;
Exit_status:=fpsystem('file "'+Form1.Memo1.Lines[0]+'"'+
' > ' + ExtractFilePath(Application.ExeName)+'file.output.data');
if Exit_status<>0
then begin
Showmessage('Error '+inttostr(Exit_status)+' with file with the line '+
Form1.Memo1.Lines[0]);
end;
str:='LANG=en_US.utf8 gio info -a "metadata::*" "' + Form1.Memo1.Lines.Strings[0] + '" | sed "/metadata/d" | sed "
/uri:/d" | sed 1d ' +
' >> ' + ExtractFilePath(Application.ExeName)+'old.annotations.list ';
Exit_status:=fpsystem(str);
if Exit_status<>0
then begin
Showmessage('Error '+inttostr(Exit_status)+' with gio info about a memo. Exiting.');
exit
end;
бешевский скрипт превратить в нечитаемый бинарник, в качестве небольшой защиты кода от посторонних глаз. Поскольку в Си не соображаю вообще, в Паскале немного лучше, поэтому и хотелось перекинуть в его исходник.
Вы ведь не собираетесь потом вносить изменения в сконвертированный код, надеюсь? Вы ж потом будете баш редактировать и автоматически конвертировать? Если да, то какая вам разница, Си там или Паскаль? Если нет, то ой.
Зачем? Тот же, например, поиск файлов в bash посредством find или locate - моментальный и простой, нежели писать рекуррентную функцию на паскале с findfirst, findnext. Подал команду как строковый параметр для fpsystem с перенаправлением в файл - и всё.
Неужели так много кода на баше, что вручную переписать настолько сложно? ТС готов доверять качеству хз пойми какого транслятора? ТС школьник, иначе с трудом представляю такое безобразие для продакшена