首页 > 代码库 > Linux shell 脚本

Linux shell 脚本

#!/bin/bash

shebang 是一个文本行,其中#!位于解释器路径之前,/bin/bash是Bash的解释器命令路径。

有两种运行脚本的方式,一种是将脚本作为Bash的命令行参数,另外一种是授予脚本执行权限,将其变为可执行文件。

对脚本设置可执行权限:

$bash script.sh#文件名称
$chmod 777 script.sh#给文件赋予读写可执行权限
$./script.sh#./表示当前目录

  1. 使用shell进行数学运算

let命令可以直接进行数学运算,变量名之前不需要添加$

#!/bin/bash
num1=5
num2=6
let result=num1+num2
echo $result

自加操作
let num1++
自减操作
let num1--
缩写形式
let num1+=5
let num1-=5
分别等同于
num1=num1+5
num1=num1-5

其他方法

操作符[]、expr也可以实现类似let

result=$[num1+num2]
result=$[$num1+5]

expr运算操作和字符串 http://www.cnblogs.com/kex1n/p/6605376.html

例1:
#!/bin/bash
num1=5
num2=6
result1=$(expr $num1+$num2)
resulr2=$(expr $num1 + $num2)
echo $result1
echo $result2
输出:result1的结果是5+6
result2的结果是11
为什么会这样呢?
运算符左右都有空格 ,如果没有空格表示是字符串连接

以上这些运算只能是整数运算,不支持浮点型

2.bc可以借助他用来执行浮点型运算

echo “4 * 5.5” | bc

#!/bin/bash
num1=4
num2=5
result=`echo "$num1 * $num2" | bc`
echo $result
设定小数精确位数
echo “scale=23 / 8” | bc
进制转换
num=100
echo “obase=2;$num” | bc
平方根
echo “sqrt(100) | bc”

技术分享

3.输出文本重定向或者将文本保存到另外一个文件中去

例1
echo
“my frist progress” >text.ext
例2
echo “my frist progress” >>text.ext

例1:是将text.ext文件中的内容先清空,然后写入my frist progress

例2:是在text.ext文件内容末尾继续写入my frist progress

4.数组和关联数组

当行数组
 array_var=(0 1 2 3 4 5 6
把数组值定义成一组“索引-值”
array_var[0]=“text1”
array_var[1]=“text2”
array_var[2]=“text3”
array_var[3]=“text4”
array_var[4]=“text5”
array_var[5]=“text6”
打印特定数组值
echo ${array_var[1]}#打印某一个数组
num=5
echo ${array_var[num]}#打印某一个数组
echo ${array_var[*]}#打印所有数组
echo ${#array_var[*]}#打印数组长度
关联数组声明
首先需要把一个变量声明成关联数组
declare -A ass_array
ass_array={[apple]=10 [banana]=20}
echo “Apple  costs is ${ass_array[apple]}”
echo {!ass_array[*]} 输出:Apple costs is
10
banana apple

 

Linux shell 脚本