сценарий bash не запускается под ksh

Альтернативный подход без привилегий - использовать программу fakeroot , чтобы сделать вид, что вам разрешено менять владельца. В то время как другие атрибуты tar потеряны, он сохраняет режим, mtime и uid / gid. Эти команды создают временный каталог, извлекают подмножество файлов и, наконец, создают новый архив:

mkdir tmp

0
08.03.2018, 16:44
1 ответ

shopt -s extglob является специфичным для bash -(shoptотдельно является специфичным для bash -, bashявляется единственной оболочкой, имеющей два набора параметров)

Параметр extglobв bashвключает поддержку расширенных подстановочных значений ksh. В ksh это не нужно, хотя обратите внимание, что в ksh эти глобусы не распознаются при использовании в переменных.

printf -vявляется расширением bash. Это не поддерживается и не нужно в ksh93, потому что там подстановка команд не создает подоболочку. Поэтому вместо:

printf -v var...

использовать

var=$(printf...)

или в кш93:

var=${ printf...;}

если аргументы printfдолжны вносить изменения в среду (, как в ${foo=bar}или$((n++))). (хотя обратите внимание, что он удаляет завершающие символы новой строки ).

Также обратите внимание, что ksh93 поддерживает арифметику с плавающей запятой, в отличие от bash, поэтому вам не нужно прибегать к такого рода хакам.

Кроме этого, я не вижу здесь ничего, что могло бы объяснить сообщение об ошибке, которое вы получаете.

4
28.01.2020, 02:18

Теги

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