Shell编程中的特殊变量之进程状态变量介绍_linux shell

进程状态变量

1、$$获取当前shell的进程号(PID)
2、$!执行上一个指令的PID
3、$?获取执行上一个命令的返回值(0为成功,非零为失败,这个很常用)
4、$_在此之前执行的命令或脚本的最后一个参数

复制代码 代码如下:

cat> test$.sh
echo'$$='$$
echo'$!='$!
echo'$?='$?
echo'$@='$@
echo'$_='$_
#输出如下
sh test\$.sh 1 2 3
$$=2556
$!=
$?=0
$@=1 2 3

$*和$@的区别

$*将所有的参数视为单个字符串,相当于“$1$2$3”
$@将每个参数视为单个的字符串,保留命令行中的任何空白字符

复制代码 代码如下:

set-- 'I am'jane lee
fori in$*; doecho$i; done;
I
am
jane
lee
fori in$@; doecho$i; done;
I
am
jane
lee
fori in"$@"; doecho$i; done;
I am
jane
lee
fori in"$*"; doecho$i; done;
I am jane lee

时间: 2024-07-30 00:53:16

Shell编程中的特殊变量之进程状态变量介绍_linux shell的相关文章

shell脚本中28个特殊字符的作用简明总结_linux shell

1. # 注释作用, #! 除外此外, 在参数替换 echo ${PATH#*:} 这里不表示注释, 数制转换, 不表示注释 echo $((2#101011)) 2. ; 命令行分隔符, 可以在一行中写多个命令. echo hello; echo there 3. ;; 终止 case 选项 复制代码 代码如下: case "$variable" inabc) echo "\$variable = abc";;xyz) echo "\$variable

shell脚本中case条件控制语句的一个bug分析_linux shell

在shell脚本中,发现case语句的一个问题.就是指定小写字母[a-z]和大写字母[A-Z]的这种方法不管用了. 出现如下情况: 复制代码 代码如下: [root@station1 ~]# cat case.sh#!/bin/bashwhile :doecho -n "input a letter: "read varcase "$var" in  [a-z]) echo "Lowercase letter";;  [A-Z]) echo &q

Shell编程中的特殊变量之位置变量介绍_linux shell

1.$0 获得当前脚本的文件名,包括路径. 复制代码 代码如下: #写一个测试脚本 vim test.sh #内容如下 dirname$0 basename$0 #执行一下 bash$(pwd)/test.sh #输出如下 /home/jane test.sh 2.$n 获取当前执行脚本的第n个参数,n=1..9,$0,为当前脚本名.如果n大于9,使用${10} 复制代码 代码如下: echo'echo '$(seq-s " $"1 5|sed's/1/$1/') > test_

linux shell中的比较符号与特殊符号介绍_linux shell

shell字符串比较.判断是否为数字 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b"

Shell脚本中计算字符串长度的5种方法_linux shell

有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 复制代码 代码如下: echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个

Shell脚本中实现切换用户并执行命令操作_linux shell

今天公司同事来找到我说要在服务器上用另外一个用户执行python脚本,但设置到crontab里却老是root用户来执行,为了省事我就想了一个偷懒的办法,就是用shell脚本切换到那个用户,然后去执行那个python脚本.好了,这篇文章我只演示怎么用shell脚本切换到其他用户执行命令. 系统:centos 5.x 脚本内容: cat test.sh 复制代码 代码如下: #!/bin/bash su - test <<EOF pwd; exit; EOF 执行结果图: 当然也可以用下面的命令来

脚本-shell编程中随机产生数组里一个变量的代码怎么写?

问题描述 shell编程中随机产生数组里一个变量的代码怎么写? 想写一个与随机抽取有关的脚本,从定义在数组里面的变量抽取,,初学shell编程很多细节不太会,朋友教教我 解决方案 function random() { min=$1; max=$2-$1; num=$(date +%s+%N); echo(num%max+min); } 假设数组长n,先使用random 0 n获得一个随机数a,然后数组[a]就是随机抽的变量 解决方案二: 可以给我讲解下不?不太看得懂,基础太差了

Shell编程中Shift的用法

http://www.cnblogs.com/image-eye/archive/2011/08/20/2147153.html 前一个例子看明白了,后面还没看清楚 Shell编程中Shift的用法 位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常有用的 Unix 命令:shift.我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当

shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的?

问题描述 shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的? if [[ ! ${a} =~ ^[0-9]+ ]]这个语句具体是怎么工作的?我只知道这个好像是如果变量a不是以数字开头就执行if语句,但是特别的: =~是什么意思? ^[0-9]+ 是什么意思?另外这个判断使用的是扩展正则表达式? 解决方案 这里只有^[0-9]+是正则表达式,表示一个数字,别的都不是正则. 解决方案二: 只是原样的字符 解决方案三: =~意思是匹配后面的正则式,^是匹配开头,