Как я могу переставить выходной файл, чтобы получить числа в дорожке и разделенные пробелом?

Вот мой сценарий. Требуется всего 4 позиционных параметра. Выходными данными должны быть все позиционные параметры, количество символов, которое у каждого есть, и первый символ каждого.

#!/bin/bash
rm -r param.out
declare -i cont
cont=$#
if [ $cont -eq 4 ]
then
  echo "Positional parameters" >> param.out
  echo $* >> param.out
  echo "Number of characters of each positional parameter" >> param.out
  echo -n $1 | wc -c >> param.out
  echo -n $2 | wc -c >> param.out
  echo -n $3 | wc -c >> param.out
  echo -n $4 | wc -c >> param.out
  echo "First character of each parameter" >> param.out
  echo $1 | head -c 1 >> param.out
  echo $2 | head -c 1 >> param.out
  echo $3 | head -c 1 >> param.out
  echo $4 | head -c 1 >> param.out
else
   echo "Error"
  exit
fi

С вводом ./file 12 23 34 456 Полученный файл является следующим:

Positional parameters

    12 23 34 456

Number of characters of each positional parameter

    2
    2
    2
    3

First character of each parameter

    1234

Идеальным было бы получение результатов в качестве первого (12 23 34 456)

Оплаченный Я знаю, что это можно сделать с помощью for/while во избежание повторений эха но я учу bash:/

1 ответ

echo -n $1 | wc -c >> param.out

wc добавляет к его выходу новую строку, которую нужно удалить или заменить пробелом, чтобы получить количество символов каждого параметра в одной строке. Вы могли бы сделать это с sed:

echo -n $1 | wc -c | sed 's/\n/ /' >> param.out

echo $1 | head -c 1 >> param.out

использование echo добавить пробел к первому символу параметра:

echo "$(echo $1 | head -c 1) " >> param.out
Другие вопросы по тегам