翻译公司网站建设多少钱,高端网站建设推广,工程信息网站哪家做的较好,wordpress 增加js文章目录 输入输出赋值和计算条件判断函数for 循环数组及其遍历其他控制语句 输入输出
echo表示打印字符串#xff1b;read表示获取用户输入#xff1b;$用于引用变量。
# test1.sh bash中用#进行单行注释
echo input your name:
read user_name
echo h… 文章目录 输入输出赋值和计算条件判断函数for 循环数组及其遍历其他控制语句 输入输出
echo表示打印字符串read表示获取用户输入$用于引用变量。
# test1.sh bash中用#进行单行注释
echo input your name:
read user_name
echo hello $user_name其运行结果为
$ bash test1.sh
input your name: #为echo打印
laser #为用户输入
hello laser赋值和计算
bash中的运算符并没有什么特殊的
运算符说明-×/,%加减乘除求余支持形式** ||乘方、关系与、或
但是与常见编程语言不同的是bash中的赋值和数学计算需要在(())中进行。且在双括号内不必使用$来引用变量。但在双括号外在将数值赋给变量时需要使用$
$ ((a53))
$ b $((a3)) #双括号内是数值需要用$
#一般在C语言中合法的表达式均可用于双括号内
$ echo $((ab ? a:b))
11条件判断
bash中条件判断通过[[]]来实现。例如
$ [[ 3 -eq 5 ]] #3是否等于5
$ echo $? #$? 表示上次计算的结果
1 #在bash中0表示真其他表示假需要注意在bash中0表示真。其支持的条件判断运算符如下
整数比较-eq-ne-gt-lt-ge-letrue条件相等不等左右左右左右左右
字符串比较!, ~true条件左右左右相等不等左匹配右(正则表达式)
其中字符串比较的是字典顺序。
文件比较-nt-ot-eftrue条件左比右新左比右旧左右相同true条件2左存在右不存在左不存在右存在
此外bash还支持文件属性的判断就操作系统而言这是必须的。但就编程语言而言这种针对文件交互的功能属于进阶内容故而放在后面。
现在关键是学会条件判断的控制结构bash和其他语言一样采用了if作为关键字同时采用fi作为条件结构结束的关键字。距离如下
$ ((a15))
$ ((b20))
$ if [[ a -le b ]]; thenecho $a #如果ab则打印aelseecho $b #否则打印bfi
15除了使用[[]]之外还可通过test或者[]但适用范围有限初学者只需掌握[[]]。
函数
在编程语言中函数的重要性是不言而喻的。在bash中创建函数也十分简单基本格式为
func(){# 传入参数用$1...$9表示return ... #如果无返回值则不用return
}其中func可换成函数的名称。在bash中提供了一些有关函数的内置$参量$1~$9可表示传入的参数当参数位置大于10的时候需写成类似${10}的形式。
由于已经讲解了判断表达式故而下面就可以实现一个递归的阶乘函数了
#!/bin/bash
fac(){x$1if [[ ${x} -eq 1 ]];thenecho 1elseecho $[$x * $(fac $[$x-1])]fi
}res$(fac $1)
echo $1的阶乘是:${res}$表达式还有如下用法
$#参数个数$*显示所有参数$显示所有参数但使用时加引号并在引号中返回每个参数$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$-显示Shell使用的当前选项与set命令功能相同。$?最后命令的退出状态0表示无错误。
for 循环
在bash中除了if else之外还有case可用于条件选择。但对初学者而言不必贪多故而将学习case的优先级下调。
循环也是一样尽管支持for、while、until等结构但暂且放在后面在此只需讲解最易理解的C语言风格的for循环。
其完整的结构是for do done
for ((i 0 ; i 1000 ; i)); doecho Counter: $i
done其中(())也可以理解为此前提到过的赋值与数学计算。而且不出意外地bash中也同样支持continue和break前者可跳过当前的循环后者可跳出循环。
在bash中其他循环结构同样是用do...done来规定循环区域。且当do和for等关键字在同一行时需要用;隔开如果另起一行则不必写分号。
数组及其遍历
在bash中圆括号除了可以用于创建局部的shell还可以用于构建数组。
$ arr(A B C D)
$ echo $arr
A
$ echo ${arr[1]}
B
$ echo ${arr[*]} #获取全部数组元素
A B C D通过for…in语句可以遍历数组但需要注意数组在被遍历时要通过所以。
$ for var in ${arr[]}doecho $vardone
A
B
C
D此外for循环还有更加便捷的遍历方案
$ for i in 1 2 3 4 5doecho $idone
1
2
3
4
5其他控制语句
while和until在语法规则上是完全相同的而在语义上则是完全相反的。前者执行到条件为false为止后者则执行到条件为true为止。
a0
# 下面的例子将打印从0到10的自然数
until [[ $a -gt 10 ]]doecho $aa$((a1))done最后bash还提供了多选语句case…esac其应用逻辑与switch case相同具体示例如下
echo input a number:
read num
case $num in1) echo you input 1;;2) echo you input 2;;*) echo you input others;;
esac其中1), 2)表示出现的情况;;相当于break用以跳出case。
至此便掌握了bash作为一门语言的基本语法。