В Bash у меня небольшая проблема с командой echo
и одной из ее последовательностей -e
: пробел добавляется перед вторым предложением в <first sentence> \n <second sentence>
.
Это моя команда:
echo -e "0 0 * * * ~/cronDaily.sh \n 0 0 * * 0 ~/cronWeekly.sh" | crontab
Это мое текущее состояние (то, что печатается в crontab):
0 0 * * * ~/cronDaily.sh
0 0 * * 0 ~/cronWeekly.sh
Это желаемое состояние в crontab:
0 0 * * * ~/cronDaily.sh
0 0 * * 0 ~/cronWeekly.sh
Что можно сделать с пустым пространством, добавленным после / n после выполнения?
Редактировать: я думал об удалении пробела сразу после \n
, но это делает код менее удобен для чтения, и я бы предпочел решение, которое позволит мне сохранить его, возможно, некоторую комбинацию отрицания, некоторую метку-заполнитель, которая будет следовать после \n
, но будет исключать пробел после того, как он будет напечатан (и, возможно, также перед ним, если один).
Просто удалите пробел после \n
(символ перехода на новую строку):
echo -e "0 0 * * * ~/cronDaily.sh \n0 0 * * 0 ~/cronWeekly.sh" | crontab
# /\
# here
Чтобы понравиться своей эстетике, вы также можете разделить его на два echo
с:
{ echo "0 0 * * * ~/cronDaily.sh" ; echo "0 0 * * 0 ~/cronWeekly.sh" ; } | crontab
echo -e "0 0 * * * ~/cronDaily.sh
0 0 * * 0 ~/cronWeekly.sh" | crontab
сделает работу. Открывающая цитата позволяет вставлять переносы строк. Конечно, Byte Commanders ответ правильный, и вы должны найти компромисс между удобочитаемостью и ориентацией на синтаксис оболочки.
Редакторы цветных синтаксисов могут помочь сделать источник более читабельным и выделить специальные символы, такие как '\ n', что улучшит решение Byte Commanders. Но есть ли у вас контроль над тем, что будет использовать пользователь кода?