文中各个命令可以拿来直接进行测试,可直接在在线测试shell命令进行测试。
a=1
echo "a="${a} #使用变量时用${}
echo "a="$a #$a在遇到$ab时,会出错,因此第一种较好
ls
b=`ls /box` #直接将命令执行结果赋值给变量
echo "b="${b}
b=$(ls /box) #直接将命令执行结果赋值给变量
echo "b="${b}
b readonly
b=2 #为只读变量重新赋值,报错
unset a
echo "a="${a}
array=(1 2 3 4 5) # 数组用括号包围起来
echo "array[2]="${array[2]}
echo "数组所有元素为:"${array[*]}
echo "数组长度为:"${#array[*]}
array[0]=99
echo "数组第一个元素为:"${array[0]}
str=1 #不加引号,类型为字符串类型
echo "str="${str}
str="1"
echo "str="${str}#加双引号,类型为字符串类型
str='1'
echo "str="${str}#加单引号,类型为字符串类型。单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;不能嵌套
str1="abcdefg"
echo "str的长度为:"${#str1}
echo "str的第2个字符开始,连续3个字符为:"${str1:1:3}
c=`expr 2 + 2` #注意数字之间的空格
echo "2+2="${c}
c=`expr 2 - 2`
echo "2-2="${c}
c=`expr 2 \* 2` # 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
echo "2*2="${c}
c=`expr 2 / 2`
echo "2/2="${c}
c=`expr 2 % 2`
echo "2%2="${c}
c=`expr 2 == 2`
echo "2==2?"${c}
c=`expr 2 != 2`
echo "2!=2?"${c}
$a -eq $b #判断等于
$a -ne $b #判断不等
$a -lt $b #判断小于
$a -gt $b #判断大于
$a -eq $b #判断等于
$a -le $b #判断小于等于
$a -ge $b #判断大于等于
if [ !false ] #无空格
then
echo "true"
else
echo "false"
fi
b1=1
b2=3
if [ ${b1} -gt 0 -o ${b2} -gt 0 ] # -o表示 或
then
echo "b1>0或b2>0"
else
echo "false"
fi
if [ ${b1} -gt 0 -a ${b2} -gt 0 ]
then
echo "b1>0且b2>0"
else
echo "false"
fi
if [[ ${b1} -gt 0 && ${b2} -gt 0 ]] #注意空格
then
echo "b1>0 && b2>0"
else
echo "false"
fi
if [[ ${b1} -gt 0 || ${b2} -gt 0 ]] #注意空格
then
echo "b1>0 || b2>0"
else
echo "false"
fi
#判等
if [ ${b1} = ${b2} ] # 注意这里是一个=
then
echo "b1==b2"
else
echo "false"
fi
#判断不等
if [ $[b1] != ${b2} ]
then
echo "b1 != b2"
else
echo "false"
fi
if [ ${b1} ]
then
echo "b1不为空"
else
echo"b1为空"
fi
#判断是目录
file=./run
if [ -d ${file} ]
then
echo "false"
else
echo "不是目录"
fi
#判断是文件
file=./run
if [ -f ${file} ]
then
echo "是文件"
else
echo "false"
fi
if [ -e ${file} ]
then
echo "文件存在"
else
echo "false"
fi
function test(){
a=$1
b=$2
echo "第一个参数为:"${a}
echo "第二个参数为:"${b}
c=`expr ${a} + ${b}`
return ${c}
}
test 1 2 # 测试函数
echo "调用函数的结果为:" $? #注意:调用时用$?
echo "fdafd"
echo "我的名字叫\"张三\"" # \"显示转义字符
echo `ls` #显示命令执行结果
echo "123" > test # 将123写入文件test中,不追加
echo "456" >> test # 将456写入文件test中,追加
echo `cat test`
ls
a=24
if [ `expr a == 2` ]
then
echo "a==2"
else
echo "false"
fi
if [ ${a} -gt 0 ] #这里只做测试,忽略逻辑
then
echo "${a}>0"
if [ ${a} -gt 6 ]
then
echo "${a} > 6"
else
echo "${a} <= 6"
fi
elif [ ${a} -gt 5 ]
then
echo "${a}>5"
elif [ ${a} -gt 10 ]
then
echo "${a}>10"
else
echo "false2"
fi
arr=(1 2 3 4 5)
for i in ${arr[*]} # 注意这里的写法是arr[*]
do
echo "当前元素为:"${i}
done
int=1
while(( $int<=5 ))
do
echo $int
let "int++" #Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量
done