119 lines
1.9 KiB
Markdown
119 lines
1.9 KiB
Markdown
---
|
||
title: "Some basic bash-script code block"
|
||
time: "2022-11-29"
|
||
tags: ["linux"]
|
||
summary: "Some basic bash-script code example. It might be help if writing some temporary work-scripts."
|
||
---
|
||
|
||
### Assignment and Substitution
|
||
|
||
```bash
|
||
a=375
|
||
hello=$a
|
||
```
|
||
|
||
### Variables
|
||
|
||
1. Built-in Variables
|
||
For example `$HOME $PWD ...`, for more info, see [environ(7)](https://man7.org/linux/man-pages/man7/environ.7.html)
|
||
2. Positional Parameters
|
||
**echo** $para1 $para2 $para3 $para4 $0 $1 $2 $3 $4 $@
|
||
3. Special Parameters
|
||
$? # exit status of a command, function, or the script itself
|
||
|
||
### Branches
|
||
|
||
```bash
|
||
if [ condition1 ];then
|
||
command_series1
|
||
elif [ condition2 ];then
|
||
command_series2
|
||
else
|
||
default_command_series3
|
||
fi
|
||
```
|
||
|
||
### Loops
|
||
|
||
### range for
|
||
|
||
```bash
|
||
for arg in `seq 10`; do
|
||
echo $arg
|
||
done
|
||
```
|
||
|
||
### for in C-like syntax
|
||
|
||
```bash
|
||
LIMIT=10
|
||
for ((a=1; a<=LIMIT; a++)); do
|
||
echo "$a "
|
||
done
|
||
```
|
||
|
||
### **while**
|
||
|
||
```bash
|
||
LIMIT=10
|
||
a=1
|
||
while ((a<=LIMIT)); do
|
||
echo "$a "
|
||
((a += 1))
|
||
done
|
||
```
|
||
|
||
### IO
|
||
|
||
```bash
|
||
command < input-file > output-file # rewrite
|
||
command >> output-file # appending
|
||
```
|
||
|
||
### Function
|
||
|
||
```bash
|
||
# define a function
|
||
function fun_name(){
|
||
command...
|
||
}
|
||
## or
|
||
fun_name(){ # arg1 arg2 arg3
|
||
command...
|
||
}
|
||
|
||
|
||
# apply a function
|
||
fun_name $arg1 $arg2 $arg3
|
||
|
||
|
||
# dereference
|
||
fun_name(){ # arg1
|
||
eval "$1=hello"
|
||
}
|
||
fun_name arg1
|
||
## the above code block is equivalent to
|
||
arg1=hello
|
||
```
|
||
|
||
### Debugging
|
||
|
||
1. take good use of sh(1)
|
||
for example:
|
||
sh -n script: checks for syntax
|
||
sh -v script: echo each command before executing it
|
||
sh -x script: echo the result of each command in an abbreviated manner
|
||
2. use echo
|
||
3. use trap
|
||
|
||
### Parallel
|
||
|
||
use GNU parallel
|
||
|
||
### Script with Style
|
||
|
||
1. Comment your code
|
||
2. Avoid using magic number
|
||
3. Use exit codes in a systematic and meaningful way
|
||
4. Use standardized parameter flags for script invocation
|