Shell 命令替换
1、命令替换,有两种方式
方式一:`command`
方式二:$(command)
2、应用场景
在命令中通过命令替换的方式,将某些子命令的结果嵌入到当前命令中。
3、举例
例1: 获取系统所用用户并输出。
// 命令形式
cat /etc/passwd | cut -d ":" -f
#!bin/bash
# 命令替换, bash脚本形式 index= for user in `cat /etc/passwd | cut -d ":" -f `
do
echo "This is $index user: $user"
index=$(($index + ))
done
例2: 根据系统时间输出今年或者明年的年份
$ date
输出:2019年 03月 24日 星期日 :: CST $ date +%Y
输出: $ echo "This is $(($(date +%Y) + 1)) year"
输出:This is year
例3: 根据系统时间获取今年过去多少个星期,还剩下多少个星期?
#!bin/bash
days=$(date +%j)
# 获取日期的第一位,如果是0.则必须处理掉,否则不能参加运算
index0=${days:0:1}
# 如果日期第一位为0,例如083,则删掉掉0
if [ $index0 == "0" ]
then
days=${days:1}
fi
echo "今年过去 $days 天"
echo "今年过去 $(($days / 7)) 个星期"
echo "今年还剩下 $((365 - $days)) 天"
echo "今年还剩下 $(((365 - $days) / 7))" 个星期
例4:判断 nginx 进程是否启动,如果没启动,则启动
#!bin/bash # 判断 ngnix进程是否启动,如果没有启动,则启动 # grep -v grep 是过滤掉grep nginx这个进程
# wc -l 是统计输出多少行
nginx_process_num=$(ps -ef | grep nginx | grep -v grep | wc -l) if [ $nginx_process_num -eq ]; then
systemctl start nginx
fi
总结:` ` 和 $() 是等价的,初学者推荐使用 $()。缺点是 有极少数的 unix 不支持 $(),但都支持 ` `
$(()) 主要用来做整数运算,包括加减乘除,引用变量前可以加 $,也可以不加 $,比如:
num1=100, num2=10
echo $(($num1 + $num2)) 等价于 echo $((num1 + num2)) // 这也证明了 shell 语法是不规范的
((num1++)) ((num--)) 可以实现自增和自减
Shell 命令替换的更多相关文章
- Shell命令替换与变量替换
命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...
- 3shell命令替换
Shell 命令替换是指将命令的输出结果赋值给某个变量.比如,将使用ls命令查看到的某个目录中的内容保存到某个变量中,这就需要使用命令替换. Shell 中有两种方式可以完成命令替换,一种是反引号` ...
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- Linux shell编程— 命令替换
有两种方法可以将命令输出赋给变量 反引号字符(`) $()格式 命令替换允许你将shell 命令的输出赋给变量 要么用一对反引号把整个命令行围起来: testing=`data` 要么使用$()格式 ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- shell的命令替换和命令组合
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中使用反引号"``"(在波浪线的 ...
- Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: 复制纯文本复制 #!/bin/bash a=10 echo -e &quo ...
- Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本
Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来.但是下载什么站点我确不知道.今天尝试了一下利用 curl ...
随机推荐
- haproxy keepalived和nodejsv9的容器镜像所需文件
配合hub.docker.com 的dablyo/haproxy-keepalived-nodejsv9:190407 使用的 [root@haproxy ~]# cat haproxy.cfgglo ...
- Delphi【异常捕获以及Exe调用方法方法】
通过测试.exe程序调用dll外部方法,通过dll调用主程序.exe方法实现. Showmessage('进入方法?这里是dll里LoginElecReq'); try ShellExecute( ...
- mysql 表关联批量更新
项目中最近遇到了需要手动修改某个表的某个字段的数据,但是这个数据是来自别的表,需要关联,所以需要用到关联的批量更新,特此记录一下. UPDATE t_account_trans_info AS iiI ...
- mpvue开发项目总结(从0到上线)
1.简言 为期一个半月的小程序开发,其中夹杂其他项目的功能迭代,跌跌撞撞的将项目完成了,今天中秋节放假前一天,以此来记录下此次打怪升级的心得与分享其中遇到花费时间的问题. 因为此次开发的是一个类电商项 ...
- 毕业设计《项目管理》总结06之ajax的初步使用经验
1.ajax页面时不能实现下载功能,因为后台下载功能返回的是一个流,而ajax得到后台的数据只能是字符串或字符,所以实现的方法可以: 例如:用js生成一个form,用这个form提交参数,并返回“流” ...
- 学习node.js的一些笔记
最近看了几眼node.js,以前曾听说它用途很大. 在菜鸟教程上,已看了过半的内容:http://www.runoob.com/nodejs/nodejs-web-module.html,如今看到了这 ...
- exe所在路径
procedure TForm1.btn1Click(Sender: TObject); begin //完整路径 E:\UsrSoft\Desktop\FileNameDemo\Project1.e ...
- form 表单提交、后台的统一处理
配合 form 提交后台 /ajaxSubmit/Submit等通过form提交springMvc下@RequestMapping("/save_oaflow_init")//Re ...
- 版本控制commit和update过程
很早就使用了git.后来还管了一个VSS,但长时间以来git和VSS基本都当ftp使用,顶多知道其有回退旧版本的功能,但对“版本控制”这个词一直以来都没领会其内含. 比如我一直担心两个问题,一是拉取下 ...
- kd-tree题目总结
在竞赛中,kd-tree一般只用于平面,很少有高于二维的情况. 在随机情况下,kd-tree的复杂度为O(NlogN),但会被极端数据卡到平方级别. 总而言之,就是优美的暴力. 查询时,通过估价函数进 ...