当前位置: 首页 > news >正文

伊利网站规划与建设最近新闻大事件

伊利网站规划与建设,最近新闻大事件,长春市城建网站,影视网站建设需要学什么特殊变量 位置参数的获取 $0 获取shell脚本文件名,以及脚本路径;$n 获取shell脚本的第n个参数,n在1~9之间,如$1$2$9,大于9则需要写 ${10};$# 获取执行的shell脚本后面的参数总个数;$* 获取she…

特殊变量

位置参数的获取

  • $0 获取shell脚本文件名,以及脚本路径
  • $n 获取shell脚本的第n个参数,n在1~9之间,如$1$2$9,大于9则需要写 ${10};
  • $# 获取执行的shell脚本后面的参数总个数
  • $* 获取shell脚本所有参数,不加引用等同于¥@作用,加上引号"$@" 作用是 接收所有参数为单个字符串;
  • $@ 不加引号,效果同上,加引号,是接收所有参数为独立字符串,如"$1" “$2” “$3” …,空格保留

特殊状态变量

  • $? 上一次命令执行状态返回值,0正确,非0失败
  • $$ 当前shell脚本的进程号
  • $! 上一次后台进程的PID
  • $_ 取得上次执行命令的最后一个参数

查找方式 man bash
搜索Special Parameters

# $# 获取参数个数 -ne不等于
[ $# -ne 2] && {echo "must be two args"exit 119 # 终止程序运行,且返回119状态码,提供给当前shell的#?变量,若是在函数里 可以return 119 用法
}
echo ok

怎么让程序后台执行?
nohup xxx & 1> /dev/null

shell子串

bash一些基础的内置命令

echo
eval
exec
export
read
shift

echo命令

-n 不换行输出
-e 解析字符串中的特殊符号\n	换行
\r	回车
\t	制表位 四个空格
\b	退格

echo

# 默认换行
echo 你好;echo 你坏
你好
你坏# 不换行打印
echo -n 你好;echo -n 你坏
你好你坏# -e
echo -e "我喜欢\n你"
我喜欢
你# 打印命令
printf "你好\t我是\t老猫\n"
你好    我是    老猫

eval

执行多个命令

eval ls;cd /tmp
# 先执行ls
# 后执行cd /tmp

exec

不创建子进程,执行后续命令,且执行完毕后,自动exit

shell子串的花式用法

name="laomao"
${变量}					返回变量值
${name}			laomao
${#变量} 				返回变量长度,字符长度-------------很重要
${#name}		6
${变量:start}			返回变量offset数值之后的字符
${name:4}		ao
${变量:start:length}		提取start之后的字符,且包含start的数字
${name:4:1}		a
${变量#word}				从变量开头,删除最短匹配的word子串
${name#lao}		mao
${变量##word}			从变量开头,删除最长匹配的word
${name##laom}	ao
${变量%word}				从变量结尾删除最短的word
${name%ao}		laom
${变量%%word}			从变量结尾开始删除最长匹配的word
${name%%}
${变量/pattern/string}	用string代替第一个匹配的pattern
${变量//pattern/string}	用string代替所有的pattern

计算变量长度的各种玩法

  • 多种统计长度的命令
  • 统计命令执行速度
# 使用wc命令参数用法
## 输出行数
echo $name | wc -l
cat test.txt | wc -l
## 找出最长的一行,并输出它的长度
echo $name |wc -L
cat test.txt | wc -L# 利用数值计算expr命令
expr length "${name}"# awk统计长度,length函数
echo "${name}" | awk '{print length($0)}'# 最快的统计方法
echo ${#name}

字符串长度统计方法这么多,谁最快?

time命令,统计命令执行市场
for循环的shell编程知识
语法

for number in {1..100}
doecho $number
done
#写在一行的方法
for num in {1..100};do echo $num;done

统计执行时长

#seq生成序列的命令
seq 10	# 默认使用回车分隔
seq -s ":" 10 # 使用:分隔
# 输出结果: 
1:2:3:4:5:6:7:8:9:10for n in {1..3};do str1=``seq -s ":" 10`;echo $str1;done
# 结合time命令
time for n in {1..10000};do char=`seq -s "laomao" 100`;echo ${#char} &>/dev/null;done
# 输出结果
real    0m7.884s	# 实际运行的时间
user    0m2.211s	# 用户态执行的时间
sys     0m5.933s	# 内核态执行的时间time for n in {1..10000};do char=`seq -s "laomao" 100`;echo ${char}|wc -L &>/dev/null;done
real    0m8.537s
user    0m2.795s
sys     0m6.002stime for n in {1..10000};do char=`seq -s "laomao" 100`;expr length "${char}" &>/dev/null;done
real    0m14.139s
user    0m3.325s
sys     0m11.623stime for n in {1..10000};do char=`seq -s "laomao" 100`;echo ${char}|awk '{print length($0)}' &>/dev/null;done
real    0m8.666s
user    0m3.270s
sys     0m6.057s

shell编程,尽量使用linux内置的命令,内置的操作,和内置的函数,效率最高C语言开发,效率最高,尽可能减少管道符的操作

字符串截取

# 从开头删除匹配最短
## 从开头删除匹配最长
% 从结尾删除匹配最短
%% 从结尾删除匹配最长# 指定字符内容截取
a*c 匹配开头为a,中间任意个字符,结尾为c的字符串
a*C 匹配开头为a,中间任意个字符,结尾为C的字符串# 替换
echo ${str1/man/boy}	# 把man改成boy
echo ${str1//man/boy}	# 把所有man改成boy
# 不会修改原有字符串

批量删除文件名后缀

  1. 单个文件去掉字符
mv laomao_1_finished.jpg laomao_1.png
  1. 利用变量的子串功能,去掉字符信息
f=laomao_1_finished.jpg;echo ${f//_finished/}
  1. 利用反引号
mv $f `echo ${f//_finished/}`
  1. 批量替换文件名,只修改所有的jpg文件
for file_name in `ls *fin*jpg`;do mv $file_name `echo ${file_name//_finished/}` ;done

特殊shell扩展变量(只对变量值为空时起作用,有值直接赋值)

这四个扩展变量,都属于对变量的值进行判断、处理
变量的处理

如果parameter变量值为空,返回word字符串,赋值给result变量
result=${parameter:-word}如果para变量为空,则word替代变量值,且返回其值
result=${parameter:=word}如果para变量为空,word当作stderr输出,否则输出变量值
用于设置变量为空导致错误时,返回的错误信息
result=${parameter:?word}如果para变量为空,什么都不做,否则word返回
result=${parameter:+word}

案例

:-

echo $laomao
result=${laomao:-miaomiao}
echo $laomao	# laomao为空 miaomiao
echo $laomao	# laomao有值,laomao的值直接赋值给result

:=

echo $laomao
result=${laomao:=miaomiao}
echo $laomao	# miaomiao
echo $result	# miaomiao

:=

echo $laomao
result=${laomao:=miaomiao}
echo $laomao	# miaomiao
echo $result	# miaomiao

:?

echo $laomao
echo ${laomao:?该变量值为空}	# 有值输出值,无值输出 该变量值为空

:+

echo ${laoamo:+miaomiao}	# 无值什么都不做,有值输出miaomiao

实际应用

数据备份,删除过期数据的脚本

find xargs 搜索且删除
# 删除7天以上的过期数据
find 需要搜索的目录 -name 你要搜索的文件名字 -type 文件类型 -mtime +7|xargs rm -fcat del_data.sh# 没有判断路径是否为空
find ${path} -name '*.tar.gz' -type f -mtime +7|xargs rm -f

父子shell

  1. source和点,执行命令,只在当前的shell环境中执行生效;
  2. 通过bash解释器执行脚本,是开启subshell,开启子shell运行脚本命令;
  3. ./script,都会指定shebang,通过解释器运行,也是开启subshell运行命令。

父shell

pstree看到的结果就是父shell环境;

pstree
├─sshd───sshd───sshd───bash───bash───pstree

ps进程管理命令,查看

ps -ef
-f 显示UID,PID,PPID【PID 进程号 PPID子进程号】
-e 列出所有进程的信息,如同-A选项optionps -ef --forest

创建进程列表(创建子shell执行命令)

需要执行一系列的shell命令

ls ;cd ;pwd; echo "laomao"

列表,是被包括起来的数据

shell的进程列表理念,需要使用 () 小括号如下执行方式,就称为进程列表

(cd ~;pwd;ls;cd /tmp/;pwd;ls)

检测是否在子shell环境中

linux默认的有关shell的变量该变量的值特点,如果是0,就是在当前shell环境中执行的,否则就是开辟子shell去运行的
BASH_SUBSHELL
  • 未开启子shell运行的命令
cd ; ls ;pwd; echo $BASH_SUBSHELL
# 返回0,没有使用子shell
  • 开启子shell运行的命令
(cd;ls;pwd;echo $BASH_SUBSHELL)
# 返回1,在子shell中运行

子shell嵌套运行

一个小括号,开启一个子shell运行命令,还可以嵌套多个

(pwd;(pwd;(echo $BASH_SUBSHELL)))
# 返回3

利用括号,开启子shell的理念,以及检查,在shell脚本开发中经常会用子shell进行多进程的处理,提高程序并发执行效率。

内置命令、外置命令

shell
linux指令

内置命令:在系统启动时就加载入内存,常驻内存,执行效率更高,但是占用资源,cd
外置命令:用户需要从硬盘中读取程序文件,再读入内存加载

外置命令

也称之为,自己单独下载的文件系统命令,处于bash shell之外的程序。

/bin
/usr/bin
/sbin
/usr/sbin

通过linux的type命令,验证是否是内置外置命令

  • 外置命令一定会开启子进程执行
    ps -f --forest

内置命令

  • 内置命令不会产生子进程去执行;
  • 内置命令和shell是为一体的,是shell的一部分,不需要单独去读取某个文件,系统启动后,就执行在内存中了。

查看linux系统中的内置命令:compgen -b

http://www.shuangfujiaoyu.com/news/9060.html

相关文章:

  • 彩票网站怎么做赚钱产品怎么做市场推广
  • 济南做网站比较好的公司深圳优化公司统高粱seo
  • 公司营销网站建设电脑优化软件哪个好用
  • 武汉专业做网站公司个人网页制作
  • 有没有做3d衣服模型网站广东网络优化推广
  • 网站怎么加关键词5118数据分析平台
  • 建一个交易网站需要多少钱做一个私人网站需要多少钱
  • 美国有个网站专门做sm中国足球世界排名
  • 做网站UI说不会写文案北京百度关键词排名
  • 向百度提交网站百度广告位价格
  • 深圳企业营销型网站百度竞价排名模式
  • 浏览器正能量不良网站产品推广外包
  • 手机英文网站广告网址
  • 深圳建筑设计找工作哪个招聘网站搜索广告和信息流广告区别
  • 域名 wordpress新手如何学seo
  • 怎么做织梦网站营业推广是一种什么样的促销方式
  • 学校的网站怎么做阿里云云服务平台
  • 天津市网站制作建设推广公司站长统计app进入网址
  • 江苏建设部网站网络营销推广的
  • 上传本地wordpress至网络服务器大连seo优化
  • 制作公司网站 黑龙江顾问
  • 上上海网站设计建设wordpress
  • dede 做手机网站微信营销管理软件
  • 班级网站建设步骤杭州网站优化搜索
  • 哈尔滨网站建设制作费用世界互联网峰会
  • 旅游网站开发网站服务器失去响应
  • 个人网站子域名设置b站新人视频怎么推广
  • 微信小程序认证入口seo企业站收录
  • 彩票系统开发搭建彩票网站服务器安全怎么做中国关键词官网
  • 福州网站建设福州站建设关键词优化到首页怎么做到的