len=`echo "${#jday}"`
if [ "$len"==1 ];
then
new_jday=`echo "00 $jday" | awk '{print $1$2}'`
fi
В приведенном выше коде я получаю переменную len, которая представляет собой число цифр в заданном целое ($ jday) в цикле. Эти целые числа имеют либо 1, 2, либо 3 цифры, а для тех, у кого есть только 1 цифра, я хочу добавить «00» (например, если целое число равно 1, оно должно выглядеть как 001). Однако, когда я запускаю вышеуказанный код, все целые числа добавляются с 00, и я не понимаю, почему это так. Когда я эхо-len, я получаю правильную длину (то есть 1, 2 или 3). Буду признателен за любую оказанную помощь.
Я вижу несколько ошибок здесь: Len = 'Эхо "$ {# jday}"' может быть просто 'Len = $ {# jday} ' ' if ["$ len" == 1] 'неверно, потому что вам нужны пробелы вокруг' == ', а также должно быть' -eq', потому что это целочисленное сравнение. Наконец, 'new_jday =' echo '00 $ jday "| awk '{print $ 1 $ 2}' '' выглядит довольно уродливо. Почему не просто 'new_jday = 00 $ jday'? Попытайтесь указать, каков ваш общий ввод и ваш желаемый результат, и мы постараемся найти лучший способ справиться с этим. – fedorqui
Для числового форматирования попробуйте 'printf '% 03d \ n'" $ {# jday} "'. –
Спасибо fedorqui, решил его по-другому без инструкции if, которую я описываю в более позднем комментарии. Большое спасибо за ваше время! и да, Этан Рейснер, это именно то, что я использовал! огромное спасибо! – januka