首页 > 系统服务 > 详细

Linux的Shell脚本

时间:2019-07-24 13:34:03      阅读:82      评论:0      收藏:0      [点我收藏+]

#!/bin/bash
your_name="runoob.com"
#readonly your_name
#将your_name设置成只读变量
echo ${your_name}
your_name="hbsd.rjxy"
#通过unset命令可以将变量删除
string="abcd"
echo "字符串abcd的长度为${#string}"
string="runoob is a great site"
echo "${string}的字串${string:1:4}"
#截取第2个字符开始的4个字符
array_name=(
value0
value1
value2
value3
)
#其他格式:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

#按索引打印数组元素
echo ${array_name[0]}
echo ${array_name[1]}
echo ${array_name[2]}
#使用@符号可以获取数组中的所有元素
echo ${array_name[@]}
#获取数组元素个数
length=${#array_name[@]}
echo "${array_name[@]}数组的长度为${length}"

#./shell.sh apple banana orange
# 如果传递的参数有空格需要用单双引号将变量包起来
#$n代表传进来的第几个参数
echo "Shell传递参数实例"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"
#$#传递脚本的参数个数
echo "向脚本传入参数的个数$#"
#$*以一个单字符串显示所有向脚本传递的参数
echo "单字符串传入的参数为$*"
#$$脚本运行的当前进程ID号
echo "运行脚本的进程ID为$$"

#$*与$@的区别
echo “-- \$*演示--”
for i in "$*";do
echo $i
done

echo “-- \$@演示--”
for i in "$@";do
echo $i
done
#$*返回的是一整个字符串 "appale banana orange"
#$@返回的是一个字符串数组 ‘apple‘ ‘banana‘ ‘orange‘

#算数运算符
#注意[ a == b ]中的左右空格
if [ $1 == $2 ]
then
echo "参数1等于参数2"
fi
if [ $1 != $2 ]
then
echo "参数1不等于参数2"
fi

#且-a and
if [ $1 -lt 10 -a $2 -gt 10 ]
then
echo "参数1小于10且参数2大于10[满足]"
else
echo "参数1小于10且参数2大于10[不满足]"
fi
#或-o or
if [ $1 -lt 10 -o $2 -gt 10 ]
then
echo "参数1小于10或参数2大于10[满足]"
else
echo "参数1小于10或参数2大于10[不满足]"
fi

#文件测试运算符
file="/Users/liujinzhou/Desktop/test/hello.txt"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ]
then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -d $file ]
then
echo "文件是文件夹"
else
if [ -f $file ]
then
echo "文件是普通文件"
else
echo "既不是文件也不是文件夹"
fi
fi
# -s 判空
# -e 检测文件是否存在

#echo之后的printf 跟C语言的一样
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
# %s %c %d %f都是格式替代符
#%-10s 指一个宽度为10个字符 任何字符都会被显示在10个字符宽的字符内 如果不足则自动以空格填充 超过也会将内容全部显示出来

#test数值测试
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo ‘两个数相等!‘
else
echo ‘两个数不相等!‘
fi

a=1
b=2
echo $[a+b]

#for循环
for loop in 1 2 3 4 5;do
echo "The value is:${loop}"
done

#while语句
int=1
while(( ${int}<=5 ))
do
echo ${int}
#Bash let 命令变量计算中不需要加上$来表示变量
let "int++"
done
#自加let int++
#自减let int--
# let no+=10 let no=no-20

#until循环 直至条件为true时停止->0~9
a=0
until [ ! ${a} -lt 10 ]
do
echo ${a}
let "a++"
done

#多选择语句
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
#case 配合break、continue使用
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done

#函数
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

#如果希望执行某个命令但是不希望在屏幕上显示输出结果 可以重定向到/dev/null
#command > /dev/null

Linux的Shell脚本

原文:https://www.cnblogs.com/hbsdljz/p/11237316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!