shell脚本编写

2020-07-16  本文已影响0人  是立品啊

shell脚本格式

#! /bin/bash
# author :jack
# date: 2020-5-20
# for study
.........

注释

单行注释

#

多行注释

:<<!
这是注释
!

案例

vim userinfo.sh


#! /bin/bash
# author :jack
# date: 2020-5-20
# for study

echo "$(cat /etc/passwd)"

执行脚本

bash userinfo.sh

sh userinfo.sh

./userinfo.sh (没有权限的情况下,chmod +x userinfo.sh) #./之间没有空格

函数

function 函数名()
{
    命令1
    命令2
    命令3
    .....
}
function hello {
    echo "hello,Jack"
}

hello #调用函数

案例1:

greet(){
  echo "hello ${LOGNAME}, today is $(date)"
  echo "hello ${LOGNAME}, \n today is $(date)"
  echo -e "hello ${LOGNAME}, \n today is $(date)"
}

greet # 调用函数

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
hello root, today is 2020年 05月 31日 星期日 00:08:04 CST
hello root, \n today is 2020年 05月 31日 星期日 00:08:04 CST
hello root,
 today is 2020年 05月 31日 星期日 00:08:04 CST

案例2

read -p "请输入你的姓名: " name     #$ REPLY
read -p "请输入你的年龄:" age

function info() {
    echo -e "你的姓名:${name} \n 你的年龄:${age}"
}

info

案例3

function info {
    echo -e "你的姓名:$1 \n 你的年龄:$2"
}

info "土豆" 18

案例4

read -p "请输入你的姓名: " name
read -p "请输入你的年龄:" age
#
function info() {
    echo -e "你的姓名:$1 \n 你的年龄:$2"
}

info "${name} " "${age}"

案例5

function info() {
    echo -e "你的姓名:$1 \n 你的年龄:$2"
}

info $1 $2

流程控制

if

if [ 条件1 ]
then
    指令
elif [ 条件2 ]
then
    指令2
else
    指令3
fi            
read -p "请输入你的年龄"
if [ ${REPLY} -gt 70 ];then echo "回家锻炼身体吧"
elif [ ${REPLY} -gt 18 ]; then echo "热烈欢迎"
else echo "回家写作业"

fi

for

for 值 in 列表
do
    执行语句
done
max=10
for ((i=1;i<=max;i++))
do
    echo "${i}"
done    
for i in $(ls /) ; do
    echo "dir:${i}"
done
dir=$(ls /)
index=1
for i in  ${dir}
do
    echo "第${index}个文件:${i}"
    index=$((index+1))
done
n=10
for (( i = 0; i < n; i++ )); do

    echo ${i}
done

while

while [ 条件 ]
do
    执行语句
done    
read -p "输入数字" a

while [ "${a}" -lt 20 ]
do
  echo "${a}"
  a=$((a+1))

done

until

until 条件
do
    执行语句
done 

case

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
if [ ! "$#" -eq 3 ]; then
  echo -e "Usge: \n $0 num1 +|-|*|/ num2"
  exit 1  # 异常退出程序
fi

case $2 in
+)
  echo "$1+$3  = $(($1+$3))"
  ;;
-)
  echo "$1-$3  = $(($1-$3))"
  ;;
\*)
  echo "$1*$3  = $(($1*$3))"
  ;;
/)
  echo "$1/$3  = $(($1/$3))"
  ;;
*)
 echo "不支持的运算符"
  ;;
esac

exit 0
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac
上一篇下一篇

猜你喜欢

热点阅读