shell变量

  • linux中位置参数变量
$n n为数字,$0代表命令本身,$1-$9代表第一至第九哥参数,十以上的参数需要大括号包含,如${10}
$* 代表命令行中所有的参数,$*把所有参数看成一个整体
$@ 代表命令行中的所有参数,不过$@把每个参数区分对待
$# 代表命令行中所有参数的个数
 1 ucm@ucm-Aspire-TC-606:~/testpace$ ./for.sh 1 99 25
 2 125
 3 The parameters is : 1 99 25
 4 parameters : 1
 5 parameters : 99
 6 parameters : 25
 7 3
 8 ucm@ucm-Aspire-TC-606:~/testpace$ cat for.sh 
 9 #!/bin/bash
10 
11 # $* $@ $#
12 
13 num1=$1
14 num2=$2
15 num3=$3
16 
17 sum=$(($num1+$num2+$3))
18 echo $sum
19 
20 
21 for i in "$*"
22     do
23         echo "The parameters is : $i"
24     done
25 
26 for y in "$@"
27     do
28         echo "parameters : $y"
29     done
30 
31 echo $#
32 ucm@ucm-Aspire-TC-606:~/testpace$ 
  • linux预定义变量
预定义变量 作用
$? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确执行;如果这个值为非0 (具体数值,由命令自己决定),则证明上一个命令执行不正确.
$$ 当前进程的进程号 (PID)
$! 后台运行的最后一个进程的进程号 (PID)
 1 root@ucm-Aspire-TC-606:/home/ucm/testpace# cat predefined.sh 
 2 #!/bin/bash
 3 
 4 echo "当前PID : $$"
 5 
 6 echo "----------***********----------"
 7 echo $?
 8 
 9 find / -name pidTest >> /home/ucm/testpace/find.log &
10 echo "后台PID : $!"
11 root@ucm-Aspire-TC-606:/home/ucm/testpace# chmod 755 predefined.sh
12 root@ucm-Aspire-TC-606:/home/ucm/testpace# ./predefined.sh 
13 当前PID : 4608
14 ----------***********----------
15 0
16 后台PID : 4609
17 root@ucm-Aspire-TC-606:/home/ucm/testpace# find: ‘/run/user/1000/gvfs’: 权限不够
18 ^C
19 root@ucm-Aspire-TC-606:/home/ucm/testpace# cat find.log 
20 /home/ucm/testpace/pidTest
21 root@ucm-Aspire-TC-606:/home/ucm/testpace# 
  • 接受键盘输入

read [option] [variable name]

options:

  -p "提示信息" : 在等待read输入时,输出提示信息

  -t 秒数 : read命令会一直等待用户输入,使用此项可以制定等待时间

  -n 字符数 : read命令只接受指定的字符数,就会执行

  -s : 隐藏输入的数据,适用于机密信息的输入

 1 root@ucm-Aspire-TC-606:/home/ucm/testpace# cat read.sh 
 2 #!/bin/bash
 3 
 4 read -p "please input your name : " -t 30 name
 5 echo $name
 6 
 7 read -p "please input your passwd : " -s -t 30 passwd
 8 echo -e "
"
 9 echo $passwd
10 
11 read -p "please input your sex [M|F] : " -n 1 sex
12 echo -e "
"
13 echo $sex
14 root@ucm-Aspire-TC-606:/home/ucm/testpace# ./read.sh 
15 please input your name : linux
16 linux
17 please input your passwd : 
18 
19 123456
20 please input your sex [M|F] : f
21 
22 f
23 root@ucm-Aspire-TC-606:/home/ucm/testpace# 
原文地址:https://www.cnblogs.com/jxdong116/p/6196029.html