Shell脚本命令

2022/4/23 7:13:54

本文主要是介绍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脚本命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程