0.创建一个Shell脚本:
vim abc.sh
1.首行声明所使用的shell:
#!/bin/bash
#!是一个特殊的标识符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
默认使用bash
2.为脚本增加可执行权限:
chmod u+x abc.sh
3.Shell 变量:
定义变量:a='Hello World'
使用变量: echo ${a}
只读变量:readonly a
删除变量:unset a
4.Shell字符串:
单引号字符串:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号字符串:
双引号里可以有变量。
双引号里可以出现转义字符。
获取字符串长度:echo ${#a}
5.Shell数组:
定义数组:
①bb=(s d f g h)
bb=(
s
d
f
g
h
)
②bb[0]=s
bb[1]=d
bb[2]=f
bb[3]=g
bb[4]=h
使用数组:
echo ${bb[0]}
使用 @ 符号可以获取数组中的所有元素:
echo ${bb[@]}
获取数组长度:
${#bb[@]}
${#bb[*]}
获取数组单个元素长度:
${#bb[n]}
6.输入输出:
输出到屏幕:echo ‘Hello World’
输出到文件:ll > aaa.txt
获取用户输入:
echo -n "enter your name:"
read name
-n选项,用于允许用户在字符串后面立即输入数据,而不是在下一行输入。
read -p "please enter your age:" age
-p选项,允许在read命令行中直接指定一个提示。
age与前面必须有空格。
从文件读取:--
7.计时
read
-t选项指定read命令等待输入的秒数。当计时器计时数满时,read命令返回一个非零退出状态
[root@rac2 ~]# cat t11.sh
#!/bin/bash
if read -t 5 -p "please enter your name:" name
then
echo "hello $name ,welcome to my script"
else
echo "sorry ,tow slow!"
fi
8.默读
read
有时候需要脚本用户进行输入,但不希望输入的数据显示在监视器上,(实际上是显示的只是read命令将文本颜色设置为与背景相同的了)。
[root@rac2 ~]# cat t12.sh
#!/bin/bash
read -s -p "enter your password:" pass
echo "is your password really $pass?"
9.读写文件
read
每调用一次read命令都会读取文件中的一行文本,当文件中没有可读的行时,read命令将以非零退出状态退出。
#!/bin/bash
count=1
cat test | while read line
do
echo "line $count:$line"
count=$[$count + 1]
done