易百Bash Shell教程
创建
shell> touch t.sh
// t.sh
#!/bin/bash
echo "Hello, world"
运行
// linux 下直接运行。在window运行可以使用git Bash、cmder
shell> ./t.sh
// 提示 Permission denied 需要增加运行权限
shell> chmod +x test.sh
注释
# 单行注释
: '
多行注释
'
变量
# 声明
varname_1=1
_var='_var'
_var2="name: $_var"
_var=`ls` #保存命令行运行的结果
#使用
echo $varname_1
读取命令行参数
shell> ./1.sh p1 p2
# 1.sh
: '
$1-9 九个参数变量
$* 所有参数拼接
$@ 数组保存
'
all=("$@")
echo $p1
echo ${all[0]}
'
读取用户输入
#1.sh
read name # 读取后保存到name变量中
read -p '名字: ' name # 增加提示
read -a names # 读取多个变量,空格分隔
休眠
#1.sh
echo `date`
sleep 2s
echo `date`
: '
秒s 分m 小时h 天d
sleep 2m 2s
'
运算
a=1
b=2
c=$((a+b))
echo $((a+1))
if 语句
#1.sh
#if
if [ 'a' == 'a' ]
then
echo 'y'
fi
#if-else
if [ 'a' == 'a' ];
then
echo 'y'
else
echo 'else'
fi
#if-else-if
if [ -e "3.txt" ];
then
echo 'y'
elif [ 'a' == 'a' ];
then
echo 'n'
else
echo 'else'
fi
# and
if [ 'a' == 'a' ] && [ 'b' == 'b' ]
then
echo 'y'
fi
# or
if [ 'a' == 'a' ] || [ 'b' == 'b' ]
then
echo 'y'
fi
# 操作符
: '
-n string 有字符
-z string 没有字符
string == string
!=
-d 是否存在并且它是一个目录
-e 是否存在
1 -eq 1 等于
2 -gt 1 大于
1 -lt 2 小于
'
case
echo "Do you know Java Programming?"
read -p "Yes/No? :" Answer
case $Answer in
Yes|yes|y|Y)
echo "That's amazing."
echo
;;
No|no|N|n)
echo "It's easy. Let's start learning from yiibai.com."
;;
*)
echo '?'
;;
esac
for
#遍历字符
learn="Start learning from yiibai.com"
for learn in $learn
do
echo $learn
done
echo "Thank You."
# 10 到 1 每次增加1
for num in {10..0..1}
do
echo "$num "
# break
# continue
done
while
i=10
while [ $i -gt 1 ]
do
echo "$i"
(( i-- ))
done
until。直到true才停止
i=1
until [ $i -gt 10 ]
do
echo $i
((i++))
done
字符串
#长度
${#str}
#查找字符串-------
#模糊匹配
s=`echo aao | grep a`
if [ ${#s} != 0 ]
then
echo 1
fi
# 全部对应
s=`echo ab | grep ^ab$`
if [ ${#s} != 0 ]
then
echo 1
fi