SHELL脚本学习(一)
0、数组变量
my_array=(1 2 3 4 5)
输出所有数据 echo ${my_array[*]}
1、第一行
shell脚本第一行:说明使用的是哪个shell
#!/usr/bin/bash
查看bash的路径:which bash
2、命令替换:
`` 和 $() 将命令的返回值复制给变量
dates=`date +%Y%m%d`
或者
dates=$(date +%Y%m%d)
输入
date1=`date +%Y%m%d`
echo today is $date1
输出:
today is 20240530
3、重定向输入和输出
3.1重定向输出
- 大于号“>”负责把命令的结果重定向到文件中
command > file
ls -al > file_ls
cat file_ls
total 16
drwxrwxr-x 2 ubuntu ubuntu 4096 May 31 12:21 .
drwxr-xr-x 13 ubuntu ubuntu 4096 May 30 19:41 …
-rw-rw-r-- 1 ubuntu ubuntu 0 May 31 12:21 file_ls
-rwxrw-r-x 1 ubuntu ubuntu 177 May 31 11:47 test1
-rw-rw-r-- 1 ubuntu ubuntu 242 May 30 19:30 test6
如果不想覆盖文件的内容可以使用“>>”
3.2重定向输入
1.小于号"<"负责将文件的内容重定向到命令
command < file
wc < file_ls
6 47 264
3.3内联输入重定向
command << EOF
data1
data2
data3
EOF
>wc << EOF
>line1 1 2 3
>line2 1 2 3
>EOF
2 8 24
4、管道
管道负责将一个命令的输入传送到另一个命令的输入
command1 | command2
>ls -al | wc
7 56 313
5、执行数学运算
5.1正数运算
要将数学运算赋值给变量,可以使用$和[];
$[operation]
输入:
var=$[5 + 10]
echo $var
输出
var=15
5.2浮点数运算
浮点数运算可以使用bc命令
variable=$(echo “options; operation”|bc)
输入:
var2=$(echo “scale=4; 8 / 5” | bc)
echo var2=$
输出:
var2=1.6000
bc支持内联重定向,当表达式比较长的时候可以写成这样:
var2=$(bc << EOF
scale=4
8/5
EOF
)
echo $var2