SHELLDECLARE(shell中declare)
一、linux中declare的详细解释及例子
declare
核心语法:
-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
14 echo'invalid option'
15 fi
二、shell脚本中数组的基本用法
首先要告诉大家,Bash Shell只支持一维数组,而且初始化的时候不用定义数组的大小。
(一)定义数组,方法1:使用小括号赋值
array1=(A B C D)或者array1=("A""B""C""D")
定义数组,方法2:使用数组下表挨个赋值
array2[0]=a
array2[1]=b
可能会有朋友会问问什么不用declare声明也能用,在这跟大家拓展下,所有变量不用显式定义都能用作数组,所以用不用declare声明都可以
(二)读取数组
${array[下标值]},例如:${array1[2]}
若要获取数组中全部的值,使用${array[*]}或者${array[@]}
(三)获取数组长度 ${#array1[*]},关键在加了个#
(四)删除数组内容元素 unset ${array1[下标]},删除整个数组 unset array1
三、shell脚本中的$*,$@和$#分别是什么意思
shell脚本中的$*,$@和$#分别是什么意思?
举例说:
脚本名称叫test.sh入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1""2""3"(分别被包住)
$#为3(参数数量)
shell脚本中wc是什么意思?wc(wordcount)
功能说明:计算字数。
语法:wc[-clw][--help][--version][文件...]
补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
参数:
-c或--bytes或--chars只显示Bytes数。
-l或--lines只显示列数。
-w或--words只显示字数。
--help在线帮助。
--version显示版本信息。
shell脚本中的DIR=${3:0:12}是什么意思?取调用脚本时第三个参数的前12个字符组成的子串
$3表示第三个参数,${3:0:12}表示从第三个参数第0个字符开始取12个字符
shell脚本中的$<是什么意思?谢谢!看你问了几次类似的问题,干脆总结一下吧。
这些都是makefile的内建命令,含义如下:
$@ target
$% file name of an archive member
$< first prerequisite
$? prerequisites newer than target
$^ prerequisites
$+ similar to$^, including duplicates
$* stem of the target filename
shell脚本中\t是什么意思\t是一个转义字符就像\n是表示换行,\t表示一个制表符,说白一点就是在文本框里输入信息时敲了下Tab键下面是这些字符及其含义:
\bBackspace
\c显示后不换行
\f在终端上屏幕的开始处显示
\n换行
\r回车
\t制表符
\v垂直制表符
\反斜框
\0nnn用1,2或3位8进制整数表示一个ASCII码字符
\t例子:
echo-e"a\tb"
输出的就是ab,a与b中间的空位就是水平制表(制表符)。
推荐参考书籍:Shell脚本学习指南
&2在shell脚本中是什么意思在Unix/Linux里面执行的程式打印到银幕上有两个不同的路泾,一个是stdout(standard output),另一个是stderr(standard error)。这两者虽然平时都同样的显示在屏幕上,但是如果你想把他们存入文件档案里时,他们可以单独的存入不同的文档,例如:
#把 programA执行结果的 stdout存入 A.out文档
#也把所有的 stderr存入 A.err文档里面:
$ programA>A.out 2>A.err
#在上面这个例子里,2代表的是程序 programA它的 stderr输出路径
#下面这个例子里,是把 stderr汇流到 stdout里面:
programA>A.out2 2>&1
#上面执行的结果是 both stderr和 stdout通通存档到 A.out2文档
shell脚本中这段是什么意思?, shell脚本中.$1语句是什么意思$+数字一般是位置参数的用法。
如果运行脚本的时候带参数,那么可以在脚本里通过$1获取第一个参数,$2获取第二个参数......依此类推,一共可以直接获取9个参数(称为位置参数)。$0用于获取脚本名称。
.$1中的点是执行的意思。
例如在liunx中。
执行sh脚本就可以直接使用“.+文件名”的方式
linux的shell脚本中的set是什么意思?怎么理解set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。使用:set(选项)(参数)
例如:
declare mylove='Visual C++'#定义新环境变量
再使用set命令将新定义的变量输出为环境变量,输入如下命令: set-a mylove
标示已修改的变量,以供输出至环境变量。
-b:使被中止的后台程序立刻回报执行状态
-C:转向所产生的文件无法覆盖已存在的文件
-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
-e:若指令传回值不等于0,则立即退出shell。
-f:取消使用通配符。
-h:自动记录函数的所在位置。
-H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。
-k:指令所给的参数都会被视为此指令的环境变量。
-l:记录for循环的变量名称。
-m:使用监视模式。
-n:只读取指令,而不实际执行。
-p:启动优先顺序模式。
-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
-t:执行完随后的指令,即退出shell。
-u:当执行时使用到未定义过的变量,则显示错误信息。
-v:显示shell所读取的输入值。
-x:执行指令后,会先显示该指令及所下的参数。
shell脚本中make clean命令是什么意思?清除掉上一次编译留下的中间文件及结果,然后重新编译。