Bash Shell
Overview
- Shell:官方以“Command Interpreter”介绍Shell,一款由C编写的应用程序,提供了一个终端通过命令解释器用以用户与操作系统的交互
- Bash:Shell种类众多,其中Bash是GNU/Linux操作系统默认的"Command Interpreter",是应用最广的一种
Basic Usage
变量
-
字符串
以下两种字符串变量赋值方式
echo
输出无差异,但是一般采用第一种greet="Welcome" greet=Welcome
-
命令执行结果:
$(command)
user=$(whoami)
-
变量值使用:
$variable
-
变量值拼接:
${variable}_xxx
output=${user}_home/tmp
函数
function func
{
echo "Hello world"
}
func
关键字function定义函数,如果左花括号不换行,函数名与花括号间需要以空格隔开,否则执行报错 function func {...
参数
#!/bin/bash
echo $0 $1 $2 $3
echo $#
echo $*
./para.sh hello world comeOn!
//output:
./para.sh hello world comeOn!
3
hello world comeOn!
值的比较
Description | Numeric Comparison | String Comparison |
---|---|---|
less than | -lt | |
greater than | -gt | |
equal | -eq | = |
not equal | -ne | != |
less or equal | -le | |
greater or equal | -ge |
- 比较判断:
[blank blank]
- 结果:
$?
,0-true, 1-false
[ $var1 -eq $var2 ] #严格遵循空格约定
echo $? # 0:true, 1:false
条件判断
num_a=100
num_b=200
if [ $num_a -lt $num_b ]; then
echo "$num_a is less than $num_b"
else
echo "$num_a is greater than $num_b"
fi
if []... then... else...fi
- 未过行需要使用分号
;
间隔
循环语句
for
#!/bin/bash
for i in 1 2 3; do
echo $i
done
for var in list ; do ... done
while
#!/bin/bash
counter=0
while [ $couter -lt 3 ]; do
let counter+=1
echo $counter
done
while []; do ... done
until
#!/bin/bash
counter=6
until [ $couter -lt 3 ]; do
let counter-=1
echo $counter
done
until []; do ... done
输入输出重定向
>
:stdout2>
:stderr&>
:stdout && stderr<
:stdin
Note: /dev/null
- 错误信息直接丢弃:
command 2> /dev/null
- 文件内容清空:
cat /dev/null > file.txt
算术表达式
$(( ))
Command
expr
:expr 2 + 2
等效于$(( 2+2 ))
let
:算术表达式变量数值计算bc
:浮点计算