Команда Linux printf не печатает начальный 0

Этого не может быть. Вы, должно быть, изменили свою переменную PATHгде-то еще, потому что ваша /usr/local/sbinидет после $JAVA_HOME/bin, а не раньше. И после этого еще один /usr/lib/jvm/java-1.8.0-openjdk/binс дополнительным /home/admin/.local/bin:/home/admin/bin.

И нет файла конфигурации bash_config, который читается при запуске.

Проверьте свои ~/.bash_profile, ~/.bashrcи ~/.profile.

Редактировать:

Для отладки закомментируйте все строки в /etc/profile.d/java.sh(, пусть каждая строка начинается с#)или переместите ее в другое место в качестве резервной копии и проверьте, есть ли какие-либо другие файлы в каталоге /etc/profile.d. Также проверьте всю систему /etc/profile.

Я до сих пор не понимаю, почему /bash_profileдолжно было быть прочитано (, если оно не было получено вами в одном из этих файлов ). Если он был прочитан, то $HOME/.local/bin:$HOME/binрасширяется до/home/admin/.local/bin:/home/admin/bin(конечной части вашего сломанного PATH), а PATHуже был сломан и установлен на

$PATH:\
/usr/lib/jvm/java-1.8.0-openjdk/bin:\
/usr/local/sbin:\
/usr/sbin:\
/usr/lib/jvm/java-1.8.0-openjdk/bin
0
17.07.2019, 18:36
2 ответа

В Linux обычно установлен GNU awk . Я не знаю, какая версия awk поддерживает начальные нули для строки формата %s, но, похоже, она не соответствует стандарту -.

Попробуйте использовать %013d вместо %013s.

0
28.01.2020, 03:27

Из вопроса не очень понятно, чего именно вы хотите добиться

Если вы пытаетесь вывести десятичные числа, я бы написал

printf("%013d",a);

0-It Left -дополняет число нулями вместо пробелов

Если вы пытаетесь напечатать символы, я бы написал

printf("%*s",13,"string which needs to be printed")

Здесь мы указываем длину символов, которые должны быть напечатаны как целочисленный аргумент для printf (), *заменяется как переданный аргумент

0
28.01.2020, 03:27

Теги

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