备注:都是自己学习总结的小demo,方便自己复习
#!/bin/bash
#在bash中,$( )与` `(反引号)都是用来作命令替换的。
#命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。
#在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:
#``很容易与''搞混乱,尤其对初学者来说,而$( )比较直观。
#最后,$()的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。
#for file in $(ls /etc);
#
#do
#echo "i am at ${file}script"
#
#done
#注意变量跟等于号之间不能有空格
array_name=(value0 value1 value2 value3)
# ${#array_name[@]}数组的长度
# ${array_name[@]} 获取数组的所有元素
#for ((i=0;i<${#array_name[@]};i++))
#
# do
# echo ${array_name[i]}
# done
#传递参数
#向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
# $@与$*相同,但是使用时加引号,并在引号中返回每个参数
# $* 与 $@ 区别:
#相同点:都是引用所有参数。
#不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
# echo "---演示\$*---"
# for i in "$*";do
# echo $i
# done
#
# echo "---演示\$@---"
# for i in "$@";do
# echo $i
# done
#shell 基本运算符:注意2 + 2不能写成2+2
# a=100 b=20
#
# echo "两个数之和为:`expr $a + $b`"
# echo "两个数之差为:`expr $a - $b`"
# echo "两个数之积为:`expr $a \* $b`"
#把b的值赋给a
# a=$b
# echo "a的值是$a"
aa="abc"
bb="efg"
#if 语句格式如下:
# if condition
# then
#command2
#command1
# fi
if [ $aa = $bb ]
then
echo "$aa = $bb : aa 等于 bb"
else
echo "$aa != $bb : aa 不等于 bb"
fi
#""显示转义字符
echo "\"it is a test\""
#显示换行 -e 开启转义 \c 不换行
echo -e "OKay \c"
echo -e "OK \n"
#原样输出字符串,不进行转义或取变量(用单引号)
echo `date`
printf "hello,shell \n"
#while 语句
int=1
while(($int<=5))
do
echo $int
let "int++"
done
#函数
age1=20
age2=40
#注意这个地方有个小坑`expr $age1 + $age2` 不能写成`expr $age1+$age2`
sum(){
# return $(("两个数的和是: `expr $age1 + $age2`"))
return $(($age1+$age2))
}
sum
echo "输入的两个数字之和为 $?"
#函数参数
#在Shell中,调用函数时可以向其传递参数。在函数体内部,通过$n的形式来获取参数的值例如,$1表示第一个参数,$2表示第二个参数,如果参数n>=10时,需要使用${n}
getType(){
ref=$1
echo "这是我的第一个shell函数$ref"
}
getType "哈哈"
#注意:函数与命令的执行结果可以作为条件语句使用。要注意的是,和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。
#grep 是从给定字符串中寻找匹配内容的命令
judgStr(){
ref=$1
temp=$ref | grep -e hello
if $temp
then
echo "grep 是从给定字符串中寻找匹配内容的命令"
else
echo "啊哈 没匹配上"
fi
}
judgStr "hello"
###########################################################################################
#!/bin/bash
echo "hello world"
# for file in `ls /Users/xuzhenzhen/Desktop`; do
# echo "${file}"
# done
# for i in {1..100}; do
# let sum+=i
# #statements
# done
for a in Ada Coffe Action Java; do
#statements
echo "i am good at ${a}Script"
done
#双引号里可以有转义字符 可以有变量
# echo $sum
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
# = 左右不能使用
greeting="hello ,"$your_name"!"
echo $greeting
#字符串长度
#查找子字符串
#反引号位 (`)在Linux中起着命令替换的作用
string="runoob is a great site"
my_arry=(a bash v)
echo ${my_arry[@]}
echo "第一个元素为:${my_arry[0]}"
nums=(29 100 13 8 91 44)
echo ${nums[@]} #输出所有数组元素
echo ${nums[*]} #输出所有数组元素
nums[10]=66 #给第10个元素赋值(此时会增加数组长度)
echo ${nums[4]} #输出第4个元素
#expr 是一款表达式计算工具
#warning:巨坑 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
val=`expr 2 + 2`
echo "两数之和为 : $val"
#warning 前后等号之间不能有空格
a=20
b=40
echo `expr $a + $b`
val=`expr $a \* $b`
echo "a*b的结果:$val"
#比较 [ $a前后要有空格
if [ $a==$b ] ;then
echo "a 等于b "
fi
if [ $a!=$b ] ;then
echo "a 不等于b"
fi
echo -e "OK! \n" # -e 开启转义
echo "It is a test"
echo -e "OK! \c" # -e 开启转义
echo "It is a test"
echo `date`
printf "hello shell \n"
#-eq 等于则为真
#-ne 不等于则为真
#-gt 大于则为真
#-ge 大于则为真
#-lt 小于则为真
#-le
ww=10
bb=20
if [[ $ww == $bb ]]; then
echo "ww 等于 bb"
elif [[ $ww -gt $bb ]]; then
echo "ww 大于 bb"
else
echo "没有符合的条件"
fi
#shell 支持for 循环
for i in 1 2 3 4 5; do
echo "The value is:$i"
done
# int=1
# while [[ $int<=5 ]]; do
# echo $int
# let "int++"
# done
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
a=0
until [[ ! $a -lt 10 ]]; do
echo $a
a=`expr $a + 1`
done
# case 右分支条件适宜圆括号开始
#;; 表示break即执行结束
echo "输入1到4之间的数字"
read aNum
case $aNum in
1|2|4) echo "选择了$aNum"
;;
*) echo "你的数字不是1-5 游戏结束"
;;
esac
demoFunc(){
echo "这是我的第一个shell 函数"
}
echo "----函数开始执行----"
demoFunc
echo "----函数执行完毕----"