web-dev-qa-db-ja.com

printf出力が次の行に実行されます

viでBashSSを作成しました。私の出力はその下の行に流れ込んでいます。私はUNIXを初めて使用するので、学ぼうとしています。私の出力はprintfを使用して表示されます。

printf "%-15s %15s %15s %2d\n %2s " $name $days $phone $start $time

たとえば、出力は次のようになります。

name       days       phone      start 

time name    days       phone      start

time name    days       phone      start 

etc...

5つの変数すべてを同じ行に出力するにはどうすればよいですか?

3
user65158

あなたの命令:

printf "%-15s %15s %15s %2d\n %2s " $name $days $phone $start $time

あなたの問題:

'...\n %2s'

$timeの前に改行を挿入しています。それを停止する。行う:

printf '%-15s %15s %15s %2d %2s\n' \
    "$name" "$days" "$phone" "$start" "$time"
8
mikeserv

@mikeservの回答に加えて、man 1 printfから出力するためのフォーマットコントロールの完全なリストを見ることができます。

   \"     double quote    
   \\     backslash    
   \a     alert (BEL)    
   \b     backspace    
   \c     produce no further output    
   \e     escape    
   \f     form feed    
   \n     new line    
   \r     carriage return    
   \t     horizontal tab    
   \v     vertical tab    
   \NNN   byte with octal value NNN (1 to 3 digits)    
   \xHH   byte with hexadecimal value HH (1 to 2 digits)    
   \uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)    

   \UHHHHHHHH
          Unicode character with hex value HHHHHHHH (8 digits)    

   %%     a single %    
   %b     ARGUMENT as a string with `\' escapes interpreted, except that 
          octal escapes are of the form \0 or \0NNN

man <command name> OSでコマンドを使用する方法については、*nixをお読みください。

2
cuonglm