1. shell脚本的格式

#! /bin/bash
echo “helloworld”
保存为test.sh
运行分为两种方法 
第一  进入到当前目录授权  chmod+x test.sh 
第二   ./test.sh  
test.sh  其实是作为可执行程序,就是相当于命令,以前不理解。
另一种运行方法   /bin/bash  test.sh  作为解释器的参数运行,此时脚本第一行注释可以不加。

2. shell变量的定义

字母,下划线和数字组成
 不能出现空格
 不能以数字开头
 不能使用标点符号
 不能使用bash里面的关键字(help可查看)

3.for循环

for循环
1.seq控制固定的次数
for i in (seq 1 5)
do 
	echo $i
done
2.对参数输出
for arg in “$@”
do
	echo $arg
done
3.基本的for循环
for x in one two three four
do
	echo $x
done

4.while循环的使用

1.	循环输出1-10
#! /bin/bash
x=1
while [ $x –lt 10 ];
do
	echo $x
	x=$((x+1))
done

5.特殊变量代表的含义

$@----所有参数(将各个参数分开输出)
$# -----参数个数
$? -----执行后的返回值
$0 -----shell文件名本身
$1 -----第一个参数
$*-----所有参数(所有参数作为整体)
${file/,*} -----删除file文件后面最后一个逗号以及后面的字符

6.shell里面if语句的使用

myfile="aa.txt"
if [ ! -f $myfile ]; then
    echo $myfile" is not exist"
    touch $myfile
else
    echo $myfile" is exist"
fi

if [ ! -s $myfile ]; then
    echo "hello, my master" > $myfile
else
    echo $myfile" is not null"
fi
笔记:if后面跟的是中括号,一定要有空格。
中括号里面的判断也要加空格,不要紧贴中括号。
while语法也是这样。

7.shell常用命令工具的使用

awk  
cat /etc/passwd | awk ‘{FS=’:’} $3 < 10 {print $1 “:” $3}’
域分隔符为:  第三列小于10, 打印第一列和第三列,中间使用冒号
last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}'    NR指的是第几行,NF指列
root     lines: 1        columns: 10

split
设定每个文件的行数是40000行。
split -40000 sourfile destfile_

sed  ----替换作用  sed ‘s/abc/def/g’ filename
     ----删除文件第一行    sed -i  ‘1d’ filename   sed –I ‘1,2d’ filename 删除1行2行
     ----删除文件最后一列  sed –I  ‘$d’ filename
     
sort  ----排序输出 –r表示逆序  cat test.txt|sort -r

cut  ----echo “root:x:0:0:root:/root:/bin/bash” | cut -d : -f 1,5  输出 root:root

tee  ---- 和重定向 > 的区别是不仅能输出到屏幕还能输出到文件中。 ls |tee file.txt

uniq  ----去重 cat file.txt|uniq

wc   ---计算多少行    cat file.txt|wc –l  

tr    ---只对输入进行处理   tr abc xyz < sourfile  替换作用

grep  ---过滤文本命令

8.逐行读取文件

----readLine.sh
#! /bin/bash
while read LINE
do
	echo $LINE
done < $1
----./readLine.sh test.txt

9.shell重定向

0代表标准输入,1代表标准输出,2代表标准错误输出
command > filename  == command  1>filename (覆盖)
command >> filename  == command  1>>filename (追加)
才知道默认输出就是标准输出
command >filename 2>&1 ----意思就是将标准错误输出和标准正确输出一起输出到文件中

10.shell数组

colors=(‘red’ ‘yellow’ ‘ blue’ ‘white’) 空格隔开
colors[0]=’red’
for color in ${colors[@]}
do 
	echo ${color}
done

11.shell接收用户输入

read –p “enter your name” –t 30 –s name
-p  输出提示信息
-t  等待时间
-s   隐藏用于加密 即在键盘上看不到输入的信息

read –p “enter your name” name
将输入的信息存入到变量name中,键盘上也可以看到输入的信息
echo  "$name,welcome" --将输入打印出来