дата: плохая ошибка преобразования на HP-UX, но не на Linux

Я установил новую версию depothelper использование пакета depothelper самостоятельно, и удаленный и переустановленный программы и они теперь работают.

2
26.04.2015, 21:30
2 ответа

В соответствии с этой страницей человека в л.с. для прикосновения: http://h20565.www2.hp.com/hpsc/doc/public/display?docId=emr_na-c02273390

... команда ожидает следующей формы для прикосновения: touch time_str file_name

Эта форма распознается , когда ни один из вариантов -r, ни -t ни опция --, ни разделитель опций не указаны, и первый операнд состоит из всех десятичных цифр.

2
27.01.2020, 21:56

Исходная команда touch поддерживала только установку времени модификации файла на текущее время.

В исторических системах System V появилась возможность указывать время в качестве первого аргумента с помощью синтаксиса [ГГ] ММДДччмм (необязательный год, месяц, день, часы, минуты). В то время соглашение об использовании тире и буквы, за которыми следует значение для необязательных аргументов (например, -t… ), не было полностью установлено. Это создало несовместимость с более ранними версиями, с такими командами, как ваша - touch 1 12 первоначально означало установку метки времени для двух файлов с именами 1 и 12 , но с этого point SysV unices начали интерпретировать 1 (или любой первый аргумент, полностью состоящий из цифр) как отметку времени.

Некоторые современные Unices, включая HP-UX, решили поддерживать совместимость с этими версиями SysV. Другие, включая * BSD и последние версии GNU, никогда не имели и не отказывались от поддержки этого синтаксиса.

Более ранние версии POSIX указывали как touch TIME FILE , так и touch [-t TIME ] ФАЙЛ , но с POSIX-2001 поддерживается только синтаксис с параметром -t .

Чтобы сделать ваш скрипт переносимым, если возможно, чтобы первый аргумент touch был файлом, имя которого полностью состоит из цифр или цифр и точки, поместите либо - перед файлом (это то, что рекомендует POSIX, так что, надеюсь, он работает везде) или поместите ./ в начало имени файла:

touch -- 1 12

или

case "$file" in
  /*) :;;
  *) file="./$file";;
esac
touch "$file"
3
27.01.2020, 21:56

Теги

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