KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In bash, if you do this: mkdir /tmp/empty array=(/tmp/empty/*) you find that array now has one element, "/tmp/empty/*" , not zero as you'd like. Thankfully, this can be avoided by turning on the nullglob shell option using shopt -s nullglob But nullglob is global, and when editing an existing shell script, may break things (e.g., did someone check the exit code of ls foo* to check if there are files named starting with "foo"?). So, ideally, I'd like to turn it on only for a small scope—ideally, one filename expansion. You can turn it off again using shopt -u nullglob But of course only if it was disabled before: old_nullglob=$(shopt -p | grep 'nullglob$') shopt -s nullglob array=(/tmp/empty/*) eval "$old_nullglob" unset -v old_nullglob makes me think there must be a better way. The obvious "put it in a subshell" doesn't work as of course the variable assignment dies with the subshell. Other than waiting for the Austin group to import ksh93 syntax, is there?
Tags (comma-separated)
Save Edits
Cancel