96 lines
1.4 KiB
Plaintext
96 lines
1.4 KiB
Plaintext
|
# 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 over a variable range of numbers
|
|||
|
|
|||
|
Don't use `seq`.
|
|||
|
|
|||
|
```shell
|
|||
|
# 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
|
|||
|
```
|
|||
|
|
|||
|
## Loop over an array with an index
|
|||
|
|
|||
|
```shell
|
|||
|
arr=(apples oranges tomatoes)
|
|||
|
|
|||
|
# Elements and index.
|
|||
|
for i in "${!arr[@]}"; do
|
|||
|
printf '%s\n' "${arr[$i]}"
|
|||
|
done
|
|||
|
|
|||
|
# Alternative method.
|
|||
|
for ((i=0;i<${#arr[@]};i++)); do
|
|||
|
printf '%s\n' "${arr[$i]}"
|
|||
|
done
|
|||
|
```
|
|||
|
|
|||
|
## Loop over the contents of a file
|
|||
|
|
|||
|
```shell
|
|||
|
while read -r line; do
|
|||
|
printf '%s\n' "$line"
|
|||
|
done < "file"
|
|||
|
```
|
|||
|
|
|||
|
## 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
|
|||
|
|
|||
|
# Brace Expansion.
|
|||
|
for file in /path/to/parentdir/{file1,file2,subdir/file3}; do
|
|||
|
printf '%s\n' "$file"
|
|||
|
done
|
|||
|
|
|||
|
# Iterate recursively.
|
|||
|
shopt -s globstar
|
|||
|
for file in ~/Pictures/**/*; do
|
|||
|
printf '%s\n' "$file"
|
|||
|
done
|
|||
|
shopt -u globstar
|
|||
|
```
|
|||
|
|
|||
|
<!-- CHAPTER END -->
|
|||
|
|