Differences between revisions 8 and 9
Revision 8 as of 2013-09-29 21:18:52
Size: 1350
Editor: host86-181-145-229
Comment:
Revision 9 as of 2013-10-14 16:54:56
Size: 2417
Comment:
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:

==== Suggestion ====
First off, many thanks for providing the best online resource for learning Bash scripting. Secondly, I hope this page is the appropriate place to make this comment.

In a script, I want to check if there are files in a directory that matched a certain glob pattern. [[BashFAQ/004|Question 4, check whether a directory is empty or not]] provided the information that I was looking for. I haven't previously used arrays in Bash but it occurred to me that instead of `(( ${#files[*]} ))`, the following test might be easier (simpler syntax to remember) for beginners to use:

{{{
`[[ ${files} ]]`
}}}

From `man bash`, ''Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0.'' If the first array element is empty (or unset?), that should imply that the array itself is empty and that the glob pattern failed to match any files. I've done a few tests locally and it seems to work fine for me - though there may be some edge cases that I haven't considered. - [[AnthonyGeoghegan]]

This page is for any feedback on the BashGuide. Feel free to ask any questions you want.

Q: I would like to cover bash in a course I will soon be teaching. May I use these materials for my course, provided the source is cited? Thanks for this excellent work, btw.

Absolutely. Perhaps we should consider putting a license on these documents. Creative commons something perhaps. - Lhunath

Q. The following suggestion can be harmful: echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc" If someone places a script named 'ls' in the bin directory of $HOME, you would be running it every time you typed 'ls', instead of running the builtin 'ls'. This can be harmful. I suggest echo 'PATH="$PATH:$HOME/bin"' >> "$HOME/.bashrc"

It is not harmful. Anyone with write access to ~/bin will generally have write access to ~/.bashrc, so there is no additional loss of security here. The original proposal also allows the user to wrap standard utilities, which yours cannot (in fact, that exactly why you proposed it). I believe being able to wrap utilities can be very useful. - Lhunath

Feedback: I could not understand the HereDocument page (found another source that helped) and I think the page could do with working examples and a more thorough explantion. Rest of course is wonderful though, I learn so much today, thanks :)

Suggestion

First off, many thanks for providing the best online resource for learning Bash scripting. Secondly, I hope this page is the appropriate place to make this comment.

In a script, I want to check if there are files in a directory that matched a certain glob pattern. Question 4, check whether a directory is empty or not provided the information that I was looking for. I haven't previously used arrays in Bash but it occurred to me that instead of (( ${#files[*]} )), the following test might be easier (simpler syntax to remember) for beginners to use:

`[[ ${files} ]]`

From man bash, Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0. If the first array element is empty (or unset?), that should imply that the array itself is empty and that the glob pattern failed to match any files. I've done a few tests locally and it seems to work fine for me - though there may be some edge cases that I haven't considered. - AnthonyGeoghegan

BashGuideFeedback (last edited 2013-12-18 02:56:25 by Chandra)