一、输入输出
1、输入
从控制台输入:
read -p "input name:" name
从文件获取输入
read -p "input name:" name < data1.txt
参数输入及使用:
$1 #使用第一个参数,依此类推使用其它参数
2、输出
echo输出:
echo "str"
echo "hello wordl!"
echo $str
printf输出:
printf "%-10s %-8s %-4.2f\n" abc bc 1.23
二、变量、数组
1、变量声明及使用
#!/bin/bash
str="hello" #字符串变量
str1="li,\"$str\"!\n" #字符串相加,和使用第一个字符串
echo $str1
echo ${str}
echo ${str:0:1} #输出第1个和第2个字符串
echo ${#str} # 输出str字符串长度
2、数组声明及使用
list=(1 2 3 4) #声明数组,用空格分隔开元素
list[0]=200 #将第一个元素改为200
a=${list[0]} #读取第1个元素
echo ${list[@]}
#输出所有元素
length=${#list[*]} #输出数组长度
3、参数
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
三、分支和循环
1、分支
if [ command ];then
代码
elif [ command ];then
代码
else
代码
fi
1.1 数值判断
[ num1 -eq num2 ] num1 和 num2 两数相等为真 , =
[ num1 -ne num2 ] num1 和 num2 两数不等为真 ,!=
[ num1 -gt num2 ] num1 大于 num1 为真 , >
[ num1 -ge num2 ] num1 大于等于num2 为真, >=
[ num1 -lt num2 ] num1 小于n um2 为真 , <
[ num1 -le num2 ] num1 小于等于 num2 为真, <=
1.2 字符串判断
[ -z "str" ] str的长度为零,则为真 ,即判断是否为空,空即是真;
[ -n "str" ] str的长度非零,则为真 ,即判断是否为非空,非空即是真;
[ "str1" = "str2" ] 两个字符串相同,则为真;
[ "str1" != "str2" ] 字符串不相同,则为真;
[ "str1" ] 字符串不为空,则为真,与-n类似。
1.3 文件及目录
[ -e file ] file 存在,则为真。
[ -d DIR ] file 存在,且是一个目录,则为真。
[ -f file ] file 存在,且是一个普通文件,则为真。
[ -r file ] file 存在且是可读的,则为真。
[ -w file ] file存在且是可写的,则为真。
[ -x file ] file 存在且是可执行的,则为真。
2、循环
2.1 for循环
for 变量名 in 列表
do
命令
done
举例:
for i in {1..5};
do
echo $i;
done
#{1..5}为取值范围1到5
echo $i 输出当前的取值
for((i=1;i<=5;i++));
do
echo $i;
done
#使用(())双括号,可以支持C语言的一些命令
for i in `seq 5`;
do
echo $i;
done
#seq 5 与{1..5}效果一样
2.2 while循环
while 条件
do
循环体
done
四、函数
function 函数名(){
命令序列
}
或
函数名(){
函数体
}
五、代码
#!/bin/bash
name="hello world"
echo $name
echo ${#name}
echo ${name:1:4}
list=(1 2 3 4 5)
list[1]=100
echo ${list[1]}
echo ${list[@]}
echo "number:$#"
echo "first:$1"
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo ${site["runoob"]}
val=`expr $1 + $2 `
echo "val=$val"
#比较第一个参数和第2个参数是否相等
if test $1 -eq $2
then
echo "equal"
else
echo "it's"
fi
#输出list
for i in {1..10}
do
echo "the value is $i"
done
index=0
#输出1到10
while [ $index -le 10 ]; do
echo "${index}"
let index=index+1
done
function printhello() {
echo "Hello"
}
printhello