How do I iterate over a range of numbers defined by variables in Bash?
for i in $(seq 1 $END); do echo $i; done edit: I prefer seq over the other methods because I can actually remember it 😉
for i in $(seq 1 $END); do echo $i; done edit: I prefer seq over the other methods because I can actually remember it 😉
You can use it like this: ## declare an array variable declare -a arr=(“element1” “element2” “element3”) ## now loop through the above array for i in “${arr[@]}” do echo “$i” # or do whatever with individual element of the array done # You can access them using echo “${arr[0]}”, “${arr[1]}” also Also works for multi-line … Read more
You can enter the long form command: source ~/.bashrc or you can use the shorter version of the command: . ~/.bashrc
(Usually) The right way if [ -z ${var+x} ]; then echo “var is unset”; else echo “var is set to ‘$var'”; fi where ${var+x} is a parameter expansion which evaluates to nothing if var is unset, and substitutes the string x otherwise. Quotes Digression Quotes can be omitted (so we can say ${var+x} instead of … Read more
To remove the line and print the output to standard out: sed ‘/pattern to match/d’ ./infile To directly modify the file – does not work with BSD sed: sed -i ‘/pattern to match/d’ ./infile Same, but for BSD sed (Mac OS X and FreeBSD) – does not work with GNU sed: sed -i ” ‘/pattern … Read more
In addition to backticks `command`, command substitution can be done with $(command) or “$(command)”, which I find easier to read, and allows for nesting. OUTPUT=$(ls -1) echo “${OUTPUT}” MULTILINE=$(ls \ -1) echo “${MULTILINE}” Quoting (“) does matter to preserve multi-line variable values; it is optional on the right-hand side of an assignment, as word splitting … Read more
Try mkdir -p: mkdir -p foo Note that this will also create any intermediate directories that don’t exist; for instance, mkdir -p foo/bar/baz will create directories foo, foo/bar, and foo/bar/baz if they don’t exist. Some implementation like GNU mkdir include mkdir –parents as a more readable alias, but this is not specified in POSIX/Single Unix … Read more
You can set the internal field separator (IFS) variable, and then let it parse into an array. When this happens in a command, then the assignment to IFS only takes place to that single command’s environment (to read ). It then parses the input according to the IFS variable value into an array, which we … Read more
Use find: find . -name “foo*” find needs a starting point, so the . (dot) points to the current directory.
File descriptor 1 is the standard output (stdout). File descriptor 2 is the standard error (stderr). At first, 2>1 may look like a good way to redirect stderr to stdout. However, it will actually be interpreted as “redirect stderr to a file named 1“. & indicates that what follows and precedes is a file descriptor, … Read more