核心语法:
-i 声明为整数
-a 声明未数组
-f 声明未函数
-r 声明未只读
以上是较为常用的,当然其他的可以通过 man declare 来获得
在默认情况下我们对于对象的声明字符串,若是希望得到数字整形类型的变量,那么就需要涉及到这次将的declare
我们看个情况:
price=10
num=3
echo $price*num
----------
10*3
若是申明为declare的话,那么就如下所示
inter12@inter12:/tmp$ declare -i price=10
inter12@inter12:/tmp$ declare -i num=3
inter12@inter12:/tmp$ declare -i total=$price*$num
inter12@inter12:/tmp$ echo $total
30
其实针对declare 还存在另一种方式来处理,直接来看代码
1 #!/bin/bash
2 #test declare and $(())
3
4
5 userDeclare(){
6
7 declare -i num=1
8 declare -i price=5
9 declare -i total=$num*$price
10 echo 'declare style is result is ' $total
11 }
12
13
14 userDouble(){
15
16 num_d=1
17 price_d=5
18 total_d=$((num_d*price_d))
19 echo "user double price is" $total_d
20 }
21
22
23 userDeclare
24 userDouble
-----------------------------------------------
inter12@inter12:~/myshell/shell/declare$ ./test
declare style is result is 5
user double price is 5
$((num_d*price_d)):代表执行其中的计算并返回结果 , 若为((num_d*price_d))则计算不返回结果,这里需要注意下!
交互式的命令 read
这也是个很常用的命令,根据终端用户的不同输入,执行不同的脚本命令!
1 #!/bin/bash
2
3 echo '---------------this is the first line ---------------'
4 echo '1.echo heihei while you selectd 1'
5 echo '2.echo haha while you selectd 2'
6 echo -n 'Selections is '
7 read selection
8
9 if [ $selection = "1" ]then
10 echo 'heihei'
11 elif [ $selection = "2" ]then
12 echo 'haha'
13 else
14echo 'invalid option '
15 fi
你可以用()来新开启一个sub-shell,这样子就不会影响当前的shell了,例如:
[cactier@localhost ~]$ (declare -r sum1=defecho $sum1)def
[cactier@localhost ~]$ echo $sum1
[cactier@localhost ~]$
这个和bash的version有关,不同version,declare命令支持的参数不一样
以我的环境为例,首先执行help declare,查看declare当前支持的信息,如下:
可以看到,-A to make NAMEs associative arrays (if supported),是用来声明关联数组的
使用bash --version,查看bash版本信息:
一切都是bash版本的原因!!!
建议linux中有命令不明白的时候,使用help 命令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)