jokerchu 发表于 2018-8-25 11:07:25

shell变量学习笔记

变量赋值,一般的和比较特殊的:  # Simple case
  a=23
  echo $a
  b=$a
  echo $b
  # a=`echo Hello!`
  -bash: !`: event not found
  注意,如果在命令扩展结构中使用一个(!)的话,在命令行中将不能工作,因为这触发了 Bash的"历史机制".
  a=`ls -l`            #把ls -l 的结果给 a
  echo $a         #别忘了,这么引用的话,ls 的结果中的所有空白部分都没(包括换行)
  echo "$a"         # 这么引用就正常了,保留了空白
  使用$(...)机制进行的变量赋值(除去使用``来赋值的另外一种新方法). 事实上这两种方法都是
  命令替换的一种形式.
  # a=2334
  # let "a += 1"
  # echo "a=$a"
  a=2335
  # b=${a/23/BB}            # 将23替换成BB
  # echo "b=$b"
  b=BB35
  空变量会怎样:
  # e=""
  # echo "e=$e"
  e=
  # let "e+=1"
  # echo "e=$e"
  e=1
  # echo "e=$e"
  e=1
  # let "e+=1"
  # echo "e=$e"
  e=2
  未声明变量会怎样:
  # echo "f=$f"
  f=
  # let "f+=1"
  # echo "f=$f"
  f=1
  如果一个脚本设置了环境变量,需要export 它,来通知本脚本的环境,这是export命令的功能。脚本只能对它产生的子进程export 变量.一个从命令行被调用的脚本export 的变量,将不能影响调用这个脚本的那个命令行shell 的环境.
  位置变量:
  就是从命令行中传进来的参数,$0, $1, $2, $3...
  $0就是脚本文件的名字,$1 是第一个参数,$2 为第2 个...,参见( 有$0的说明),$9以后就需要打括号了,如${10},${11},${12}...
  两个值得注意的变量$*和$@, 表示所有的位置参数。

页: [1]
查看完整版本: shell变量学习笔记