gpt4 book ai didi

linux - 如何重新排列输出文件以获得泳道中并以空格分隔的数字?

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:21 27 4
gpt4 key购买 nike

这是我的脚本。它只需要 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)

PD。我知道这可以使用 for/while 来完成,以避免重复 echo,但我正在学习 bash :/

最佳答案

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

关于linux - 如何重新排列输出文件以获得泳道中并以空格分隔的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47312393/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com