我已经完成了这个脚本:
#! /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"
Run Code Online (Sandbox Code Playgroud)
如何在同一行打印 3 条回声线?
mik*_*erv 10
如果你根本不使用它会好得多echo
。将echo
when 与任意输入结合使用可能会产生意想不到的效果。更重要的是,您不需要wc
计算 shell 变量中的字符数 - shell 也可以这样做,而无需执行单独的启动进程。
例如:
与wc
:
_path=/some/place/in/my/filesystem
printf %s "$_path" | wc -c
###OUTPUT###
28
Run Code Online (Sandbox Code Playgroud)
没有wc
:
printf %s "${#_path}"
###OUTPUT###
28
Run Code Online (Sandbox Code Playgroud)
两个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
Run Code Online (Sandbox Code Playgroud)
你的命令:
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
Run Code Online (Sandbox Code Playgroud)
请参阅为什么 printf 比 echo 好?以及有关POSIX 参数扩展的规范以获取更多信息。
要echo
使用在 linux 系统1 上使用的来抑制换行符,请使用-n
:
echo -n "echec avec le nom $path qui fait"
Run Code Online (Sandbox Code Playgroud)
但是,wc
也会打印一个换行符,并且不能被抑制,但可以将其丢弃:
size=$(echo $path | wc -c);
echo "echec avec le nom $path qui fait $((size-1)) caracteres"
Run Code Online (Sandbox Code Playgroud)
我在$((size-1))
这里使用是因为wc
将通过回声计算换行符输出。您可以改为使用size=$(echo -n $path | wc -c)
,但要注意关于-n
.
1. -n
GNU coreutil的echo实现是非标准的,所以YMMV。幸运的是,您实际上并不需要在这里使用它。
归档时间: |
|
查看次数: |
26083 次 |
最近记录: |