shell变量学习笔记
变量赋值,一般的和比较特殊的: # Simple casea=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]