我已经完成了这个脚本:
#! /bin/sh
path="foo"
while touch $path ; do
path=./${path}
done
echo "echec avec le nom $path qui fait"
echo $path|wc -c
echo "caracteres"
如何在同一行打印 3 条回显线?
答案1
echo
如果你根本不用的话会好得多。echo
与任意输入结合使用可能会产生意想不到的效果。更重要的是,您不需要wc
计算 shell 变量中的字符 - shell 也可以做到这一点,并且无需执行单独的进程来启动。
例如:
和wc
:
_path=/some/place/in/my/filesystem
printf %s "$_path" | wc -c
###OUTPUT###
28
不wc
:
printf %s "${#_path}"
###OUTPUT###
28
两个printf
论点:
printf 'Arg char count:\t%s\nArg contents:\t%s\n' \
"${#_path}" "$_path"
###OUTPUT###
Arg char count: 28
Arg contents: /some/place/in/my/filesystem
你的命令:
printf 'echec avec le nom %s qui fait %s caracteres\n' \
"$_path" "${#_path}"
###OUTPUT###
echec avec le nom /some/place/in/my/filesystem qui fait 28 caracteres
看为什么 printf 比 echo 更好?和规格POSIX 参数扩展了解更多信息。
答案2
echo
要在 Linux 系统1上使用抑制换行符,请使用-n
:
echo -n "echec avec le nom $path qui fait"
但是,wc
还会打印换行符,并且无法抑制该换行符,但可以将其丢弃:
size=$(echo $path | wc -c);
echo "echec avec le nom $path qui fait $((size-1)) caracteres"
我在这里使用是$((size-1))
因为wc
将通过 echo 计算换行符输出。您可以改为使用size=$(echo -n $path | wc -c)
,但要注意关于 的非标准性的警告-n
。
1. -n
GNU coreutil的echo实现是非标准的,所以YMMV。幸运的是,您实际上并不需要在这里使用它。
答案3
选项-n
withecho
抑制换行符。所以,你可以这样做:
echo -n "echec avec le nom $path qui fait"
echo -n $(echo $path|wc -c)
echo "caracteres"