首页 > 系统 > Linux > 正文
Shell常用语法归集
2017-05-19       个评论    来源:szh1124的专栏  
收藏    我要投稿

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
点击复制链接 与好友分享!回本站首页
上一篇:nginx启用HSTS以支持从http到https不通过服务端而自动跳转
下一篇:squid的正反向代理
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站