shell 脚本 变量 获取程序输出结果异常分析

#! /bin/bash
pid=$(pgrep hello)
echo ${pid}

脚本名称是 hello_test.sh

当hello进程存在时,总是返回两个值

当hello进程不存在时,返回值并不为空,总是返回一个值,多次运行,返回的值并不固定

当然,以上都不是期望的结果。

为什么不存在时,也会返回呢,并且返回值不一样,记得好像有一个内部变量记得上次shell进程的pid,

应该是这样。

经人提醒,脚本是不是也是hello.sh,终于恍然醒悟,脚本名是hello_test.sh,也包含hello,那返回的值应该是当前脚本的pid

想完测试一下,在原来的脚本中再加上

echo $$

在hello没运行时,会输出两行相同的值,预想得到证明。

算是发现一个小的隐藏甜点吧,呵呵!

时间: 2024-11-01 15:48:54

shell 脚本 变量 获取程序输出结果异常分析的相关文章

对于shell脚本参数获取时的一点小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取得

shell脚本解析1----打印输出

#!/bin/sh             #指定该脚本文件的解析程序,“#”用作注释,相当于C语言的"//" a="hello world!"   #变量赋值.shell脚本中的变量无需定义,也没有类型. echo "A is:"          #打印a echo $a 程序执行结果: shell脚本解析1----打印输出

shell脚本中获取日期

数字时间转标准时间: 数字时间如:20151009163000 标准时间:2015-10-19 16:30:00 a=`head -1 /home/xxx/xxx/bin/.status |awk -F= '{print $2}'|sed -r 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/\1-\2-\3 \4:\5:\6/'` 把标准时间转换成秒(据1970-1-1): date -d "$a" +%

shell脚本中获取当前所在目录地址

shell脚本中获取当前所在目录如下 #!/bin/bash work_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd ${work_path}/src 原文地址:https://www.cnblogs.com/zhangshiwen/p/9064161.html

Java实践-远程调用Shell脚本并获取输出信息

1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId&g

Linux mysql shell脚本 变量和环境变量 位置参数 预定义变量 运算符 判断 流程控制 for循环 与用户交互 函数

mysql 1. 卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6.x86_64 rpm -e mysql-libs 删除旧版本 rpm -e --nodeps mysql-libs 强行删除 2. 安装mysql 2.1 安装源码需要编译 下载c的编译工具 yum -y install make gcc-c++ cmake bison-devel ncurses-devel 2.2 xftp连接上传 xftp连接上

[转]Shell脚本中获取SELECT结果值的方法

有时候我们可能会需要在Shell脚本中执行SELECT语句,并将结果赋值给一个变量,对于这样的情形,我们可以用以下的方法来达到目的. 点击(此处)折叠或打开 #!/bin/ksh # # Created : 2015.05.25 # Updated : 2015.05.25 # Author : Jet Chenxi Zhang # Description : Get SELECT result in Shell # Variable Definitions # ORACLE_SID=audte

shell脚本变量数值计算

1.算数运算符 执行算数运算就离不开各种运算符号,和其他编程语言一样,shell脚本也有运算符号.常见运算符号如下图所示: 上图中的运算符号常用于常见的运算命令,常用运算命令如下图所示: 2.双小括号"(())"运算命令 2.1 双小括号数值运算的基础语法 双小括号"(())"的作用是进行数值运算与数值比较,它的效率很高. 2.2 双小括号数值运算案例 案例1:利用"(())"进行简单的运算 [[email protected] ~]# echo

linux学习之shell脚本 ------- 变量

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell中的一些变量. 变量类型: Shell中有以下几种变量: 1) 本地变量 2) 环境变量 3) 位置变量 4) 标准变量 5) 特殊变量 1) 本地变量 本地变量在用户现在的Shell生命周期的脚本中使用. 用法: variable-name=value set: 可以显示本地所有的变量 注意,本地变量如果加上readonly,则该本地变量不能被修改,