Bash
Bash
一、变量
环境变量:
- 如何查看?
env 或者printenv可以查看所有,printenv xxx或者echo $xxx可以查看特定变量
- 常见环境变量
创建变量:
- 等号两边不能有空格,如果变量有空格,必须放入引号中
- 同一行可以定义多个变量,但是要有分号分割
特殊变量:
1 |
|
参考:http://c.biancheng.net/view/806.html
二、运算符
1
2
(()) 只能用于整数,不能用于浮点数的计算
a=$((8*9))
三、条件判断
1
2
3
4
5
6
7
if commands; then
commands
[elif commands; then
commands...]
[else
commands]
fi或者写成以下格式:
1
2
3
4
5
6
7
8
9
if true
then
echo 'hello world'
fi
if false
then
echo 'it is false' # 本行不会执行
fi常见条件判断符号:
```bash -eq 等于 -ne 不等于 -le 小于等于 -ge 大于等于 -lt 小于 -gt 大于 -n xxx 若不为空 则返回true -z 若为空 则返回true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
* 表达式判断符号:https://wangchujiang.com/linux-command/c/test.html
### test命令
`if`结构的判断条件,一般使用test命令,有三种形式
```bash
# 写法一
test expression
# 写法二 中括号和表达式之间要有空格
[ expression ]
# 写法三 支持正则判断 中括号和表达式之间要有空格
[[ expression ]]
测试字符串:
$string1 = $string2
$string1 !\= $string2
$string1 # 不为空
-z $string1 # 长度为0
-n $string1 # 长度不为0
测试数字:
-eq -ne -ge -gt -le -lt
测试文件属性:
-b -c -d -f -d -r
[]
是test
命令的简写形式
四、循环
while
循环:
1
2
3
while condition; do
commands
done或者
1
2
3
4
while condition
do
commands
done
五、分支语句
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
temp="hello"
case $temp in
"he")
echo "111"
;;
"hello")
echo "222"
;;
esac
六、数组
1
2
3
4
5
array=(hello good nice)
for ele in ${array[@]} # 数组遍历
do
echo $ele
done
七、输入输出重定向
command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file 将输出以追加的方式重定向到 file。 n > file 将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。
文件描述符:0为标准输入,1为标准输出,2为标准错误输出
例:
ls a.txt b.txt > output.txt 2>&1
,有a.txt
但是没有b.txt
,所以一部分在标准输出,一部分在标准错误输出。>
是1>
的简写,因此上述命令可写为ls a.txt b.txt > output.txt 2>&1
,&
存在的原因是为了指明后面的数字是文件描述符而不是文件名
>&
和&>意思相同
八、编写可靠Bash脚本
1 |
|
九、样例
9.1 H1ve平台的entrypoint
1 |
|
参考
https://wangdoc.com/bash/variable
https://zhuanlan.zhihu.com/p/264346586
http://c.biancheng.net/shell/
https://www.yiibai.com/bash/bash-scripting.html
https://quickref.cn/docs/bash.html
附:Windows平台脚本
如何在后台静默运行?
创建
run.vbs
1
2
3
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /c your_script.bat", 0
Set objShell = Nothing其中
your_script.bat
为自己的脚本文件