Differences between revisions 3 and 14 (spanning 11 versions)
Revision 3 as of 2005-10-25 14:32:43
Size: 1258
Editor: cvfftp
Comment: sequential numbers
Revision 14 as of 2023-06-23 18:42:54
Size: 2398
Editor: larryv
Comment: fixed sloppily added entry
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
If you want to help with the BashFaq, you could try to answer one of the following questions. Just answer it, copy it to the BashFaq page, and remove the question here.
 * How can I redirect the output of the script to both standard output and a log file? Answer: duplicating fds is not sufficient, because it duplicates the file descriptor number, not the data. But you can still use {{{tee}}}.
 * Somewhere the content of variables in my script lose whitespace. Answer: _echo "$var" - quoting_
 * How can I ensure that only once instance of my script is running at a time? Answer: e.g. lockfile. This should be answered in the UnixFaq
 * How can I handle command line arguments in a shell script? Answer: {{{getopts(1)}}}
 * How can I have variable variables, e.g. myvar=prefix$othervar? Answer: {{{eval(1)}}}
If you want to help with the BashFAQ, you could try to answer one of the following questions. Just answer it, copy it to a new subpage of the BashFAQ page (e.g. [[BashFAQ/101]]), and remove the question here.
 * How can I redirect the output of the script to both standard output and a log file?
  * Duplicating fds is not sufficient, because it duplicates the file descriptor number, not the data.
  * But you can still use {{{tee}}}: {{{exec > >(tee log)}}}
 * Somewhere the content of variables in my script lose whitespace.
  * echo "$var" - quoting. See BashPitfalls for more.
Line 9: Line 9:
 * How to determine Yesterday's date? Answer: date -d'yesterday'
 * How to convert Unix time stamps to a date (and vice versa)? Answer: GNU date, awk+strftime()
 * How to redirect stderr to a pipeline?
 * How can I redirect file names using sequential numbers to avoid overwriting existing ones? Answer: mv --backup=numbered
  * This can't be done in any straightforward manner because there's no hook in Bash to execute arbitrary code after a user presses Enter but before a command is executed. The DEBUG trap is triggered after each command, and the PS1 variable is triggered when a prompt is displayed, which is also after the command, rather than before.
  * In bash 4, the DEBUG trap is triggered ''before'' every command, according to `help trap`. This is a change from bash 3. So this should be possible in bash 4. Someone just needs to write it up....
 * How to determine Yesterday's date?
  * date -d'yesterday' # GNU date (sufficiently new versions)
  * date -d '1 day ago' # GNU date (all versions I have available to test)
  * date -r $(( $(date +%s) - 86400 )) # OpenBSD date
 * How can I redirect file names using sequential numbers to avoid overwriting existing ones?
  * mv --backup=numbered # requires GNU mv
 * How can I set the output of a command to a variable without executing a subshell (i.e. $() ) or writing to a file and reading it back?
  * I think this does the job, have not had time to test: http://tldp.org/LDP/abs/html/process-sub.html (see also ProcessSubstitution on this site)
   * Commands in a process substitution ( >(cmd) or <(cmd) ) are definitely run in a subshell (or rather a full-blown background process). I'm not sure I understand what this question is really asking. Maybe it's related to [[BashFAQ/084|FAQ 84]].
 * Creating temporary files securely and ''portably'' ([[BashFAQ/062]] has a partial answer)
 * Which shebang — {{{#!/bin/bash}}} or {{{#!/usr/bin/env bash}}} — should be used or in which circumstance? Is one preferred over the other?

Bash Open Questions

If you want to help with the BashFAQ, you could try to answer one of the following questions. Just answer it, copy it to a new subpage of the BashFAQ page (e.g. BashFAQ/101), and remove the question here.

  • How can I redirect the output of the script to both standard output and a log file?
    • Duplicating fds is not sufficient, because it duplicates the file descriptor number, not the data.
    • But you can still use tee: exec > >(tee log)

  • Somewhere the content of variables in my script lose whitespace.
  • How can I make bash set the xterm title to the command it is currently executing?
    • This can't be done in any straightforward manner because there's no hook in Bash to execute arbitrary code after a user presses Enter but before a command is executed. The DEBUG trap is triggered after each command, and the PS1 variable is triggered when a prompt is displayed, which is also after the command, rather than before.
    • In bash 4, the DEBUG trap is triggered before every command, according to help trap. This is a change from bash 3. So this should be possible in bash 4. Someone just needs to write it up....

  • How to determine Yesterday's date?
    • date -d'yesterday' # GNU date (sufficiently new versions)
    • date -d '1 day ago' # GNU date (all versions I have available to test)
    • date -r $(( $(date +%s) - 86400 )) # OpenBSD date
  • How can I redirect file names using sequential numbers to avoid overwriting existing ones?
    • mv --backup=numbered # requires GNU mv
  • How can I set the output of a command to a variable without executing a subshell (i.e. $() ) or writing to a file and reading it back?
    • I think this does the job, have not had time to test: http://tldp.org/LDP/abs/html/process-sub.html (see also ProcessSubstitution on this site)

      • Commands in a process substitution ( >(cmd) or <(cmd) ) are definitely run in a subshell (or rather a full-blown background process). I'm not sure I understand what this question is really asking. Maybe it's related to FAQ 84.

  • Creating temporary files securely and portably (BashFAQ/062 has a partial answer)

  • Which shebang — #!/bin/bash or #!/usr/bin/env bash — should be used or in which circumstance? Is one preferred over the other?

BashOpenQuestions (last edited 2023-06-23 18:42:54 by larryv)