Shell常用语法归集

1、数学表达式:

num=$[num+1]
num=$((num+1))
num=`expr $num+1`

2、() 与{}

()用户组合执行多个命令;
{}用户组合执行多个命令;
()多个命令在子Shell中执行;{}在当前Shell中执行;

3、(()) 与$(())

(())专用于数值计算;
$(())直接获取数值计算结果;

4、‘ 与 "

‘号内所有字符当作普通字符处理
“号内’$’与’`‘当作特殊字符处理

5、文件重定向


6、声明一个数组

declare -a array_name


7、创建一个数组以及使用数组
array_name=([0]=\'ele1\', [1]=\'ele2\')
array_name[0]=\'ele1\'		array_name[1] = \'ele2\'
str="1 2 3 4 5"		arr=($str)
read -a array_name <<< "str str2 str3"
IFS=: read -a array_name <<< "str:str2:str3"
array_name=([0]=\'ele1\', [1]=\'ele2\')
➜ ~ array_name=(\'ele1\', \'ele2\')➜ ~ echo $array_name'ele1', 'ele2'➜ ~ echo ${#array_name[*]}2➜ ~ echo ${#array_name[@]}2➜ ~ echo ${#array_name[*]}2➜ ~ echo ${array_name[*]}'ele1', 'ele2'➜ ~ echo ${array_name[n]}➜ ~ echo ${array_name[0]}➜ ~ echo ${array_name[1]}'ele1',

8、销毁整个数组:

unset arr[1]	#销毁某个元素
unset arr		#销毁整个数组
unset arr[*]		#销毁整个数组
unset arr[@]		#销毁整个数组

9、关联数组:

declare -A array_name

array_name=([key1]="value1", [key2]="value2")  
for key in ${!array_name[*]}
do
	echo $key,${array_name[$key]}
done
for value in ${array_name[*]}
do
	echo $value
done


10、数组本身是变量

array_name=([key1]="value1", [key2]="value2")  
for key in ${!array_name[*]}
do
	echo $key,${array_name[$key]}
done
for value in ${array_name[*]}
do
	echo $value
done

11、字符串长度

➜  ~ echo $a
abcd
➜  ~ expr ${#a}
4
➜  ~ expr "$a":".*"
abcd:.*

字符串查找:
expr index $str "substr"


12、字符串替换:

str="apple, tree, apple tree"
echo ${str/apple/APPLE}   # 替换第一次出现的apple
echo ${str//apple/APPLE}  # 替换所有apple
echo ${str/#apple/APPLE}  # 如果字符串str以apple开头,则用APPLE替换它
echo ${str/%apple/APPLE}  # 如果字符串str以apple结尾,则用APPLE替换它

13、字符串选取

expr substr "$str" start_pos end_pos
echo ${str:start_pos}
echo ${str:start_pos:end_pos}
echo ${str:-start_pos:end_pos}

14、截取字符串

echo ${str#a*c}		#左边截取最短的匹配
echo ${str##a*c}	#左边截取最长的匹配
echo ${str#"a*c"}	#左边截取最短的匹配
echo ${str##"a*c"}	#左边截取最长的匹配
echo ${str%a*c}		#右边截取最短的匹配
echo ${str%%a*c}	#右边截取最长的匹配

15、比较

[[ "a.txt" == a.* ]]		#pattern compare
[[ "a.txt" = ~ .*\.txt ]]	#regex compare
[[ "str1" == "str2" ]]
[[ "str1" < "str2" ]]

16、字符串连接

${str1}${str2}


BASH调试
1、-x将shell所有命令输出到标准输出上

set -x
/bin/bash -x
bash -x bashfile.sh
-n 直输出命令,不执行
-v 将读取到的shell脚本输出到标准输出
trap
trap 'err_func param' ERR|EXIT|DEBUG

2、定义debug调试钩子:

DEBUG="true"
function DEBUG()
{
	if [ "$DEBUG" = "" ]; then
		$@
	fi
}

3、bash作业管理

jobs:查看当前在后台执行的进程
Ctrl+z:建当前的前台进程暂停,变成后台进程
bg:将后台暂停的程序继续执行
fg:将后台进程调到前台继续执行----》fg jobs_num






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值