2015-05-07 83 views
6

在網上的bash腳本例子中遇到了這個printf -v幾次以及在stackoverflow上的幾個問題之後,我在printf聯機幫助頁中找不到合適的解釋。'printf -v'是做什麼的?

man printfman 3 printf不幫我。

我要去哪裏尋找?

+0

爲什麼自我回答總是得到負面分數? (...) – sjas

回答

9

存在着linux的內幾個printf命令:

  1. printf作爲已知的C函數。 (在man 3 printf中描述)
  2. GNU printf,位於/usr/bin/printf。 (見man printf
  3. bash's printf built-in。 (請參閱man bash,並在SHELL BUILTIN COMMANDS處查看條目)。還可以通過help printf找到幫助,它將顯示聯機幫助頁中的內置說明。

爲了找到答案,你究竟需要,使用type <command>發現什麼特別用於:

[email protected]:~# type printf 
printf is a shell builtin 

所以3號是這裏的解決方案:

printf [-v var] format [arguments]

The -v option causes the output to be assigned to the variable var rather than being printed to the standard output.

摘自取自:

printf [-v var] format [arguments] 
    Write the formatted arguments to the standard output under the control 
    of the format. The -v option causes the output to be assigned to the 
    variable var rather than being printed to the standard output. 

    The format is a character string which contains three types of objects: 
    plain characters, which are simply copied to standard output, character 
    escape sequences, which are converted and copied to the standard 
    output, and format specifications, each of which causes printing 
    of the next successive argument. In addition to the standard printf(1) 
    format specifications, printf interprets the following extensions: 

     %b  causes printf to expand backslash escape sequences in the 
       corresponding argument (except that \c terminates output, 
       backslashes in \', \", and \? are not removed, and octal escapes 
       beginning with \0 may contain up to four digits). 

     %q  causes printf to output the corresponding argument in a format that 
       can be reused as shell input. 

     %(datefmt)T 
       causes printf to output the date-time string resulting from using 
       datefmt as a format string for strftime(3). The corresponding 
       argument is an integer representing the number of seconds since 
       the epoch. 

       Two special argument values may be used: 

        -1 represents the current time, and 
        -2 represents the time the shell was invoked. 

      Arguments to non-string format specifiers are treated as 
      C constants, except that a leading plus or minus sign is allowed, 
      and if the leading character is a single or double quote, 
      the value is the ASCII value of the following character. 

      The format is reused as necessary to consume all of the arguments. 
      If the format requires more arguments than are supplied, the extra 
      format specifications behave as if a zero value or null string, 
      as appropriate, had been supplied. 

      The return value is zero on success, non-zero on failure. 
+2

通過運行'help printf'可以找到shell內置'printf'的幫助。 – chepner

+0

@chepner謝謝你,將答案添加到答案中。 – sjas