shell学习笔记2

来源:互联网 发布:java 九九乘法表直式 编辑:程序博客网 时间:2024/05/24 06:51

注意:shell变量赋值"="两边不能有空格。

shell中小括号,大括号结构和有括号的变量,命令的用法

1.${var} 加一个大括号来限定变量名称的范围,例如

var=test

echo ${var}AA 
testAA

2.命令替换$(cmd)

shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令echo $(ls)中的$(ls)位置,即替换了$(ls),再执行echo命令

例如

$ ls 
a b c 
$ echo $(ls) 
a b c
3.一串的命令执行()和{}

()和{}都是对一串的命令进行执行,但有所区别:
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令

4.POSIX标准的扩展计算:$((exp))

这种计算是符合C语言的运算符,也就是说只要符合C的运算符都可用在$((exp)),甚至是三目运算符。
注意:这种扩展计算是整数型的计算,不支持浮点型.若是逻辑判断,表达式exp为真则为1,假则为0。 
$ echo $((3+2)) 

$ echo $((3>2))


shell进阶篇

eval实现变量的间接引用
x='abc def'
y='$x'
echo $y
$x
eval echo $y
abc def

函数的定义和使用

function foo() # foo为函数名
{
local a=$1; # 局部变量

echo $a;
return 0; # 返回值
}

foo “cool!” # 函数调用
echo $? # 打印返回值



自定义函数 – 16进制转点分十进制
a()
{
       local str=$1
       echo -n $((16#${str:0:2}))
       str=${str:2}
       if [ "x$str" = "x" ]
       then
              echo; return
       else
              echo -n "."; a $str
       fi
}
#Usage
a "DDB14CCF"


0 0
原创粉丝点击