Added loops
This commit is contained in:
95
README.md
95
README.md
@@ -60,13 +60,16 @@ scripts and not full blown utilities.
|
|||||||
* [Remove duplicate array elements.](#remove-duplicate-array-elements)
|
* [Remove duplicate array elements.](#remove-duplicate-array-elements)
|
||||||
* [Cycle through an array.](#cycle-through-an-array)
|
* [Cycle through an array.](#cycle-through-an-array)
|
||||||
* [Toggle between two values.](#toggle-between-two-values)
|
* [Toggle between two values.](#toggle-between-two-values)
|
||||||
|
* [Loops](#loops)
|
||||||
|
* [Loop over a range of numbers.](#loop-over-a-range-of-numbers)
|
||||||
|
* [Loop over an array.](#loop-over-an-array)
|
||||||
|
* [Loop over files and directories.](#loop-over-files-and-directories)
|
||||||
* [File handling](#file-handling)
|
* [File handling](#file-handling)
|
||||||
* [Read a file to a string.](#read-a-file-to-a-string)
|
* [Read a file to a string.](#read-a-file-to-a-string)
|
||||||
* [Read a file to an array (*by line*).](#read-a-file-to-an-array-by-line)
|
* [Read a file to an array (*by line*).](#read-a-file-to-an-array-by-line)
|
||||||
* [Get the first N lines of a file.](#get-the-first-n-lines-of-a-file)
|
* [Get the first N lines of a file.](#get-the-first-n-lines-of-a-file)
|
||||||
* [Get the last N lines of a file.](#get-the-last-n-lines-of-a-file)
|
* [Get the last N lines of a file.](#get-the-last-n-lines-of-a-file)
|
||||||
* [Get the number of lines in a file.](#get-the-number-of-lines-in-a-file)
|
* [Get the number of lines in a file.](#get-the-number-of-lines-in-a-file)
|
||||||
* [Iterate over files.](#iterate-over-files)
|
|
||||||
* [Count files or directories in directory.](#count-files-or-directories-in-directory)
|
* [Count files or directories in directory.](#count-files-or-directories-in-directory)
|
||||||
* [Create an empty file.](#create-an-empty-file)
|
* [Create an empty file.](#create-an-empty-file)
|
||||||
* [File Paths](#file-paths)
|
* [File Paths](#file-paths)
|
||||||
@@ -551,6 +554,68 @@ cycle() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Loops
|
||||||
|
|
||||||
|
## Loop over a range of numbers.
|
||||||
|
|
||||||
|
Don't use `seq`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Loop from 0-100 (no variable support).
|
||||||
|
for i in {0..100}; do
|
||||||
|
printf '%s\n' "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Loop from 0-VAR.
|
||||||
|
VAR=50
|
||||||
|
for ((i=0;i<=VAR;i++)); do
|
||||||
|
printf '%s\n' "$i"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
## Loop over an array.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
arr=(apples oranges tomatoes)
|
||||||
|
|
||||||
|
# Just elements.
|
||||||
|
for element in "${arr[@]}"; do
|
||||||
|
printf '%s\n' "$element"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Elements and index.
|
||||||
|
for i in "${!arr[@]}"; do
|
||||||
|
printf '%s\n' "${arr[$i]}"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
## Loop over files and directories.
|
||||||
|
|
||||||
|
Don’t use `ls`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Greedy example.
|
||||||
|
for file in *; do
|
||||||
|
printf '%s\n' "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
# PNG files in dir.
|
||||||
|
for file in ~/Pictures/*.png; do
|
||||||
|
printf '%s\n' "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Iterate over directories.
|
||||||
|
for dir in ~/Downloads/*/; do
|
||||||
|
printf '%s\n' "$dir"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Iterate recursively.
|
||||||
|
shopt -s globstar
|
||||||
|
for file in ~/Pictures/**/*; do
|
||||||
|
printf '%s\n' "$file"
|
||||||
|
done
|
||||||
|
shopt -u globstar
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
# File handling
|
# File handling
|
||||||
@@ -652,34 +717,6 @@ $ lines ~/.bashrc
|
|||||||
48
|
48
|
||||||
```
|
```
|
||||||
|
|
||||||
## Iterate over files.
|
|
||||||
|
|
||||||
Don’t use `ls`.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# Greedy example.
|
|
||||||
for file in *; do
|
|
||||||
printf '%s\n' "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
# PNG files in dir.
|
|
||||||
for file in ~/Pictures/*.png; do
|
|
||||||
printf '%s\n' "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Iterate over directories.
|
|
||||||
for dir in ~/Downloads/*/; do
|
|
||||||
printf '%s\n' "$dir"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Iterate recursively.
|
|
||||||
shopt -s globstar
|
|
||||||
for file in ~/Pictures/**/*; do
|
|
||||||
printf '%s\n' "$file"
|
|
||||||
done
|
|
||||||
shopt -u globstar
|
|
||||||
```
|
|
||||||
|
|
||||||
## Count files or directories in directory.
|
## Count files or directories in directory.
|
||||||
|
|
||||||
This works by passing the output of the glob as function arguments. We
|
This works by passing the output of the glob as function arguments. We
|
||||||
|
|||||||
Reference in New Issue
Block a user