# 定义数组 idea -> array create
favs=("足球" "篮球" "乒乓球" "保龄球")
# 访问指定的下标 idea -> array at index
fav=${favs[1]}
# 设置指定下标的值 idea -> array set element
fav[1]="哈哈"
# 添加元素 idea -> array add
favs+=("羽毛球")
# 获取数组的所有元素 idea -> array all
echo ${favs[@]}
# 获取数组的长度 idea -> array length
length=${#favs[@]}
# 或者
length=${#favs[*]}
# 循环数组 idea -> array iteration
for item in ${favs[@]}; do
echo "$item"
done
# 删除数组的某个元素 idea -> array delete at
unset favs[0]
# 删除真个数组 -> idea -> array delete
unse favs
a=10
b=20
if [$a -eq $b]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b : a 不等于b"
fi
# -eq 等于 idea-> number equal
# -ne 不等于 idea-> number not equal
# -gt 大于 idea-> number greater
# -lt 小于 idea-> number less
# -ge 大于等于 idea-> number greater or equal
# -le 小于等于 idea-> number less or equal
布尔运算符
布尔运算符共有三种与或非:
a=10
b=20
# 非
if [$a != $b]
then
echo "$a != $b: a不等于b"
else
echo "$a == $b: a等于b"
fi
# 与
if [$a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15:返回true"
else
echo "$a 小于 100 且 $b 大于 15:返回false"
fi
# 或
if [$a -lt 100 -o $b -gt 15 ]
then
echo "$a 小于 100 或 $b 大于 15:返回true"
else
echo "$a 小于 100 或 $b 大于 15:返回false"
fi
逻辑运算符(短路运算符)
逻辑运算符需要用双方括号包裹
a=10
b=20
if [[ $a -lt 100 && $b -gt 100]]
then
echo "返回true"
else
echo "返回false"
fi
if [[ $a -lt 100 || $b -gt 100]]
then
echo "返回true"
else
echo "返回false"
fi
字符串运算符
a=zhangsan
b=lisi
# 相等判断(在idea中,快捷输入为 string equal)
if [$a == $b]
then
echo 'a 和 b是两个完全相同的字符串'
else
echo 'a 和 b是两个不同的字符串'
fi
# 不等判断(在idea中,快捷输入为 string not equal)
if [$a != $b]
then
echo 'a 和 b是两个不同的字符串'
else
echo 'a 和 b是两个完全相同的字符串'
fi
# 空判断(在idea中,快捷输入为 string is empty)
if [ -z $a ]
then
echo "a 变量是一个空字符串"
else
echo "a 变量不是一个空字符串"
fi
# 非空判断(在idea中,快捷输入为 string not empty)
if [-n $a]
then
echo 'a 不是一个空字符串'
else
echo 'a 是一个空字符串'
fi
# 或者
if [$a]
then
echo 'a 不是一个空字符串'
else
echo 'a 是一个空字符串'
fi
文件测试运算符
file="/var/node/test.sh"
# 文件是否可读(在idea中,快捷输入为 file readable)
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
# 文件是否可写(在idea中,快捷输入为 file writable)
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
# 文件是否可执行(在idea中,快捷输入为 file executable)
if [ -x $file ]
then
echo "文件可以执行"
else
echo "文件不可执行"
fi
# 判断文件是否存在(在idea中,快捷输入为 file exists)
if [ -f $file ]
then
echo "目标是一个文件,且存在"
else
echo "文件不存在"
fi
# 判断目录是否存在 (在idea中,快捷输入为 directory exists )
if [ -d $file]
then
echo "目标是一个目录,且存在"
else
echo "目录不存在"
fi
# 判断路径是否存在,既可以判断文件,又可以判断目录(在idea中,快捷输入为 path exists)
if [-e $file]
then
echo "目标路径存在"
else
echo "目标路径不存在"
fi
# 循环有限的数字
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
# 循环有限的文本
for str in This is a string
do
echo $str
done
# This
# is
# a
# string
# 循环数字范围
for i in {1..1000} ; do
echo "$i"
done
# 循环数组
arr=(1 2 3 4)
for i in ${arr[@]}; do
echo "$i"
done
while
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
echo "是的!$FILM 是一个好网站"
done
无限循环:
while :
do
command
done
while true
do
command
done
for (( ; ; ))
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
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done