シェルスクリプトでecho(およびwc)を使用せずに新しい行を印刷する方法は?

シェルスクリプトでecho(およびwc)を使用せずに新しい行を印刷する方法は?

次のスクリプトを完了しました。

#! /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シェル変数の文字数を数える必要はありません。シェルでもこれを行うことができ、起動するために別々のプロセスを実行する必要はありません。

たとえば、

そしてwc

_path=/some/place/in/my/filesystem
printf %s "$_path" | wc -c

###OUTPUT###
28

いいえwc:

printf %s "${#_path}"

###OUTPUT###
28

2つの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 パラメータ拡張より多くの情報を知りたいです。

おすすめ記事