コマンド-nを使用して印刷しようとしていますecho。しかし、単に入力するとecho -n、表示されず、改行のみが発行され-n、代わりに改行が発行されます。
getopt、解析、コマンドラインに(???)
コマンド-nを使用して印刷しようとしていますecho。しかし、単に入力するとecho -n、表示されず、改行のみが発行され-n、代わりに改行が発行されます。
getopt、解析、コマンドラインに(???)
回答:
問題は、引数をecho解釈-nすることです。デフォルトのbash実装では、それは(からhelp echo)を意味します:
-n do not append a newline
それを回避するさまざまな方法があります:
別のキャラクターを含めることで、オプションではないものにします。たとえばecho、で改行を出力しないように-n指示してから、バックスラッシュエスケープを解釈し-e、明示的に改行を追加するように指示します。
$ echo -ne '-n\n'
-nまたは、スペースを含めるだけです
$ echo " -n"
-n
ただし、これにより、おそらく不要なスペースが追加されます。
その前に非印刷文字を使用します。ここに。バックスペース(\b)を使用しています
$ echo -e "\b-n"
-n
これはまた、おそらく望まない余分な文字を追加します。
トリックを使用する
$ echo n- | rev
-n
このrevコマンドは、出力を逆に出力するだけです。
$ printf -- '-n\n'
-ngrep '^-n'。pritnf本当に行く方法です。
printfとにかく良いですが、質問はちょうどに関するものですecho。
echo -e "-n\c"。
\cさらなる出力の抑制
適切なツールを使用することをお勧めします。printf代わりに使用できます:
% printf "-n\n"
-n
echoながら、printfより良い標準化されています。
このコマンドを使用できますが、余分なスペースが追加されます。
echo -e "\r-n"
これは一種のハックです。
-e バックスラッシュコマンドシンボルを有効にします。
\r キャリッジリターンです。
実際\、文字列の任意の場所で有効な文字が実行されます。
どちらが有効かはで確認できますhelp echo。
echo "-n"はの-nパラメータとして使用されているため機能しませんecho。
PS私見は最高のソリューションです
echo -e "-n\c"
余分な文字は追加されません。
echo -e "-n\n"
同じものを改行文字で出力します。
-nは有効であり、-nfoo印刷されません。
man echoもあります。しかしhelp、少し良いです。
/bin/echoはまったく異なるものでありecho、bashで実行すると、シェルに応じてまったく異なる組み込みコマンドを取得します。
あなたたちは本当にそれを考え直しています。
echo -e \\055n
または末尾の改行なし
echo -en \\055n
printf "-n\n" 思いますか?
/bin/echo、少なくとも次のように呼び出された場合echo -e "\055n"
@ABの答えを拡張するための唯一の移植可能な使用方法echoは、などのオプションの使用を控えることです-n。printf可能な場合は代わりに使用することを検討してください。このリファレンスページでは、より詳細な情報を提供し、いつ、どのように、どのように使用すべきかechoを非常によく説明していますprintf。
現在、echo(1)は、フラグとエスケープシーケンスを省略した場合にのみ移植可能です。プレーンテキスト以外のものが必要な場合は、代わりにprintf(1)を使用してください。
Bashスクリプトでは、次を実行できます。
echo -n -
echo n
または対話型シェルで:
echo -n - ; echo n
これechoは-キャラクターとnキャラクターです。
-pilot6@Pilot6:~$。2番目の出力n。
&&この答えが間違っているとは言いません。
echo -n -- -n(テストに便利なLinuxボックスはありません)?