Shell脚本基础知识

Shell 变量

命名规则:
首字符为字母
中间不能有空格,可用下划线
不能使用标点和bash的关键字
赋值:
显示命名(不能加$)、语句赋值
只读变量:
readonly variable_name
删除变量:
unset varible_name 不能删除只读变量


Shell字符串

字符串可以用单引号、双引号、不用引号,其中双引号中可以显示变量、转义字符
{#string} 获取字符长度{string:start:end} 提取子字符串


Shell 参数传递

0 n 第n个入参,其中n为1.2.3…
# 入参个数* 入参合为字符串
@" 1” “ 2"..." n”显示入参


Shell数组

语法格式: array_name=(value1 … valuen)
读取数组:
arrayname[index]index {array_name[*]}、 arrayname[@] {#my_array[*]}、${#my_array[@]} 获取数组长度


Shell基本运算符

原生bash不支持数学运算,可使用awk、expr命令实现
注意:表达式和运算符之间要有空格,完整的表达式要被反引号包含
算术运算符:
+ - * / % = == !=
注: 乘号*前必须加反斜杠,条件运算必须有[]括起来,而且中间要有空格
eg: expr $a + $b
关系运算符:
关系运算符支持数组,不支持字符串,除非字符串的值是数字
-eq :检测两个数是否相等 [ aeq b ]
-ne :检测两个数是否不相等
-gt :检测左边数是否大于右边
-lt :检测左边数是否晓瑜右边
-ge :检测左边数是否大等于右边
-le:检测左边数是否小等于右边
布尔运算符:
! 非运算
-o 或运算 [ alt20o b -gt 100 ]
-a 与运算
逻辑运算符:
$$ 逻辑运算AND
|| 逻辑运算OR [[ $a -lt 20 || $b -gt 100 ]]
文件测试符:
-b file 检测文件是否是块设备文件
-c file 检测文件是否是字符设备文件
-d file 检测文件是否是目录
-f file 检测是否是普通文件
-g file 检测文件是否设置SGID
-k file 检测文件是否设置了粘着为
-p file 检测文件是否有名管道
-u file 检测文件是否设置了SUID
-r file 检测文件是否可读
-w file 检测文件是否可写
-x file 检测文件是否可执行
-s 检测文件是否为空(文件大小小于0)
-e 检测文件或目录是否存在


Shell echo命令

命令格式:
echo string
echo “this is a string” 显示普通字符
echo “\”” 显示转义
read name 从标准输入中读取一行,并输入给每个字段指定给shell变量
echo “$name “显示变量
echo -e “abc \n” #-e开启转义 显示换行
echo -e “abc \c” 显示不换行
echo date 显示命令执行结果


printf命令

命令语法:
printf format-string [arguments…]
fomat-string :为格式控制字符串
arguments:为参数类别
eg:
printf “%-10s %-8s %-4.2f” a b 4444.22


test命令

test 命令用于检查某刻命令是否成立,可以对数值,字符,文件进行测试


Shell流程控制

if 语句格式

if condition1
then 
command1
elif condition2
then
command2
else
command3
fi

for循环格式

for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done

while语句

while condition
do 
command
done

无限循环

while :
do
command
done

或者

while true
do 
command
done

或者

for (( ; ; ))

until循环

until condition
do 
command
done

case语句格式

case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac

取值
为变量或尝试,当匹配发现取值符合模式后,执行其中命令直至;;
使用 * 捕获值
跳出循环:
break 跳出循环
continue 跳出当次循环


Shell函数

[ function ] funname [ ( ) ]
{
action;
[return int;]
}

函数返回值在调用该函数后通过 $? 获得


Shell输入/输出重定向

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之间的内容作为输入


Unix/Linux命令运行:

标准输入文件(stdin): stdin的文件描述符为0,Unix程序默认从stdin读取数据
标准输出文件(stdout):stdout的文件描述符为1,Unix程序默认向stdout输出数据
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流写入错误新

你可能感兴趣的:(shell,bash,脚本,Linux)