本文主要是介绍Shell脚本命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#! /bin/bash
echo "hello">1.txt # > 文件覆盖 >> 文件追加
echo "hello";
echo 'fff'; #封号分割多命令执行
#--------------定义变量--------------------
test=123
test="$test"456 #“$变量”
echo $test
test=${test}789 #字符串连接 ${test}
echo $test
#--------------单引号和双引号-----------------
name=sc
echo '$name' #单引号内都是字符串
echo "$name" #输出内容
echo `date` #反引号输出的命令会执行,不推荐使用
echo $(date) #推荐$()执行具体命令
#-------------unset变量删除
name=sc
unset name
echo $name #打印不出来
# $0,$1,$2 执行shell输入参数
echo "第一个参数文件名:$0" #文件名
echo "输入第二个参数$1"
echo "第3个参数$2"
#-----------字符串操作---------------
str="abcd"
echo "abcd字符串长度:"${#str}
echo "abcd取第2个位置开始,截取2个字符长度"${str:1:2}
#-------------数组操作------------------
#---------算数运算符-- 不支持简单数据运算,需要awk和expr配合,表达式之间必须要有空格----------
a=10
b=20
val=$(expr $a + $b)
echo "a + b : $val"
val=$(expr $a - $b)
echo "a - b : $val"
val=$(expr $a \* $b) #注意乘法需要带\
echo "a * b : $val"
val=$(expr $b / $a)
echo "b / a : $val"
val=$(expr $b % $a)
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
#----------关系运算符 只支持数字,不支持字符串---------------------------
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于 b"
else
echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
else
echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
else
echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b: a 大于或等于 b"
else
echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
echo "$a -le $b: a 小于或等于 b"
else
echo "$a -le $b: a 大于 b"
fi
#-------------------布尔运算符------------------
# !运算符 [!false] 返回true
# -o 或运算符 [ 5 lt 3 -o 5 gt 3]
# -a 与运算符,两个表达式为true [ 5 lt 3 -a 5 gt 3]
# || [[ 5 lt 3 || 5 gt 3]]
# && [[ 5 lt 3 && 5 gt 3]]
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 && $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 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [[ $a -lt 5 || $b -gt 100 ]] #||恶心前面还要个[]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi
#-------------------字符串运算符------------------
# a=abc b=eft
# = [ $a = $b ] 返回false
# != [ $a != $b ] 返回true
# -z 字符串长度为0返回true [ -z $a ] 返回false
# -n 字符长长度不为0返回true [ -n $a ] 返回true
# $ 检测字符串长度不为空返回true [ $a ]
#---------------echo---------------------
echo "\"ffff\""
read name
echo "$name ffffff"
#----------------test命令----------------
# test -eq -ne -gt -ge -lt -le 数值
# test $num1 = $num2 字符串 = != -z (0长度) -n (非0长度)
# test -e 存在 -r 只读 -w -x -s -d -f -c -b 文件存在其为块文件
num1=100
num2=200
if test $((num1)) -eq $((num2))
then
echo 'fk'
else
echo 'ttt'
fi
result=$((num1+num2))
echo ${result}
if test $num1 = $num2
then
echo 'ffff'
else
echo 'ffff'
fi
#-----------条件语句-----------------
# if condition then ..... fi
# if condition then ..... else ..... fi
# if condition then ....... elif ....... then ....else ..... fi
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
num1=$((2*3))
num2=$((1+5))
if test $((num1)) -eq $((num2))
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
#--------------while-----------
# while condition
# do
# xxxxx
# done
int=1
while(( ${int}<=5 ))
do
echo $int
let int++
done
#---------------case esac
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
#----------------------------------------
site="runoob"
case "$site" in
"runoob") echo "菜鸟教程"
;;
"google") echo "Google 搜索"
;;
"taobao") echo "淘宝网"
;;
esac
#-------------------------------------
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
#-------------------------------
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
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
这篇关于Shell脚本命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!