ABS之变量若干

 变量的名字就是变量保存值的地方. 引用变量的值就叫做变量替换.
如果variable1是一个变量的名字, 那么$variable1就是引用这变量的值, 即这边变量所包含的数据.
bash$ variable=23

##############################################
bash$ echo variable
variable
##############################################
bash$ echo $variable
23
##############################################
echo $hello   # A B C D
 35 echo "$hello" # A B  C   D
 36 # 就象你看到的echo $hello   和    echo "$hello"   将给出不同的结果.
 37 # ===============================================================
 38 # 引用一个变量将保留其中的空白, 当然, 如果是变量替换就不会保留了.
 39 # ===============================================================
##############################################
变量赋值
赋值操作前后都不能有空白
= -eq 可以用来作为条件测试操作,所以不要和赋值操作混淆
a=123
[root@centos129 ~]# echo "the value of \"a\" is $a"
the value of "a" is 123
##############################################
使用let赋值
let a=15+5
[root@centos129 ~]# echo "the value of \"a\" is now $a"
the value of "a" is now 20
##############################################
在for循环中赋值
for i in 7 8 9 11 ; do echo -n "$a " ;done 7 8 9 11
##############################################
使用read命令进行赋值
#!/bin/bash
echo -n "Enter \"a\" "
read a
echo " the value of \"a\" is noew $a"
echo
exit 0




##############################################
简单和复杂两种类型的变量赋值

#!/bin/bash
a=23  这里a=23
echo $a 然后echo出$a
b=$a b等于$a
echo $b echo $b #这里$a=$b
#命令替换  #现在开始命令替换
a=`echo hello!` a等于echo hello 注意这里是反逗号,a等于echo 出的结果 为hello
echo $a #=hello
a=`ls -l` 同理a= ls -l 的结果
echo $a echo $a 应该等于la -l执行的结果
echo
echo "$a"
exit 0

bash 变量是不区分类型的!不像其他语言一样,bash并不对变量区分类型! `本质上, Bash变量都是字符串. 但是依赖于具体的上下文, Bash也允许比较操作和整数操作. 其中的关键因素就是, 变量中的值是否只有数字.

整书还是字符串!
##############################################
如echo "b=$b"
echo
c=BB34
echo "c=$c"
d=${c/BB/23}
echo "d = $d"
let "d+=1"
echo "d = $d"
echo
#null空值!?
e=""
echo "e =$e"
let "e+=1"
echo "e=$e"
echo
#如果没有声明变量会是什么样子!
echo "f=$f"
let "f+=1"
echo "f=$f"
echo
##############################################
执行结果
[root@centos129 tmp]# bash test.sh
a=2335
b=BB35
b=BB35
b=1

c=BB34
d = 2334
d = 2335

e =
e=1

f=
f=1
################################################3
特殊的变量类型
局部变量:这种变量只有在代码快或则函数中才可见
环境变量:这种变量将影响用户接口和shell行为
在通常情况下, 每个进程都有自己的"环境", 这个环境是由一组变量组成的,
这些变量中存有进程可能需要引用的信息. 在这种情况下, shell与一个一般的进程没什么区别.
每次当一个shell启动时, 它都将创建适合于自己环境变量的shell变量.
更新或者添加一个新的环境变量的话, 这个shell都会立刻更新它自己的环境
(译者注: 换句话说, 更改或增加的变量会立即生效),
 并且所有的shell子进程(即这个shell所执行的命令)都会继承这个环境.
(译者注: 准确地说, 应该是后继生成的子进程才会继承Shell的新环境变量,
 已经运行的子进程并不会得到它的新环境变量).
##########
分配给环境变量的空间是有限的. 创建太多环境变量, 或者给一个环境变量分配太多的空间都会引起错误.

bash$ eval "`seq 10000 | sed -e 's/.*/export var&=ZZZZZZZZZZZZZZ/'`"

bash$ du
bash: /usr/bin/du: Argument list too long
如果一个脚本要设置一个环境变量,那么需要讲这些变量export出来,也就是需要通知到脚本本地的环境,这就是export的功能!
####################################################
一个脚本只能够export变量到这个脚本所产生的子进程,
也就是说只能够对这个脚本所产生的命令和进程起作用.
如果脚本是从命令行中调用的, 那么这个脚本所export的变量是不能影响命令行环境的.
也就是说, 子进程是不能够export变量来影响产生自己的父进程的环境的.
 1 #!/bin/bash
  2
  3 # 作为用例, 调用这个脚本至少需要10个参数, 比如:
  4 # ./scriptname 1 2 3 4 5 6 7 8 9 10
  5 MINPARAMS=10
  6
  7 echo
  8
  9 echo "The name of this script is \"$0\"."
 10 # 添加./是表示当前目录
 11 echo "The name of this script is \"`basename $0`\"."
 12 # 去掉路径名, 剩下文件名, (参见'basename')
 13
 14 echo
 15
 16 if [ -n "$1" ]              # 测试变量被引用.
 17 then
 18  echo "Parameter #1 is $1"  # 需要引用才能够转义"#"
 19 fi
 20
 21 if [ -n "$2" ]
 22 then
 23  echo "Parameter #2 is $2"
 24 fi
 25
 26 if [ -n "$3" ]
 27 then
 28  echo "Parameter #3 is $3"
 29 fi
 30
 31 # ...
 32
 33
 34 if [ -n "${10}" ]  # 大于$9的参数必须用{}括起来.
 35 then
 36  echo "Parameter #10 is ${10}"
 37 fi
 38
 39 echo "-----------------------------------"
 40 echo "All the command-line parameters are: "$*""
 41
 42 if [ $# -lt "$MINPARAMS" ]
 43 then
 44   echo
 45   echo "This script needs at least $MINPARAMS command-line arguments!"
 46 fi 
 47
 48 echo
 49
 50 exit 0

本文出自 “风光坏家伙” 博客,转载请与作者联系!

你可能感兴趣的:(职场,hello,休闲)