Как я могу переставить выходной файл, чтобы получить числа в дорожке и разделенные пробелом?
Вот мой сценарий. Требуется всего 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