千家信息网

shell语法是什么

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,今天就跟大家聊聊有关shell语法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。变量rz="hufei" # 定义静态变量date=
千家信息网最后更新 2024年12月12日shell语法是什么

今天就跟大家聊聊有关shell语法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

变量

rz="hufei"   # 定义静态变量date=`date`  # 赋值,动态变量echo $rz   # hufeiecho '$rz' # '$rz'   不能用echo "$rz"  # hufeiecho "'$rz'"  # 'hufei'echo '"$rz"'  #'$rz'  不能用echo `$rz`  # 报错echo $dateecho ${rz}addword  # 变量拼接总结: 字符串带上双引号,变量引用不要用单引号

传参

#!/bin/bash  # 生产中不一定是这一行echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";echo "个数:$#" # 参数个数echo "传递参数作为一个字符:$*" #将所有参数拼为一个字符串echo "PID: $$" # shell进程pid,防止误kill./test.sh 1 2 3

调试

  • 执行时加上 -x 或者 #!/bin/bash -x

数组

arr=(hello world jike make you)echo ${arr} # 默认第一个echo ${arr[*]} # 所有的,按空格分开echo ${arr[4]} # 第四个echo ${#arr[*]} # 数组个数

判断

  • 方式1

if condition1then    command1elif condition2 then     command2else    commandNfi
  • 方式2(命令形式)

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

if案例

a="abc"b="abc"c=3# stringif [ $a == $b ]then        echo "a equal b"else        echo "a no equal b"fi# numif [ $c == $b ];then echo "c equal b";else echo "c not equal b";fi# 判断文件是否存在dir="/data/"file="/data/file"if [ ! -d $dir ];then echo "${dir}不存在";else echo "${dir}已存在";fiif [ ! -f $file ];then echo "${file}不存在";else echo "${file}已存在";fi参数说明:-d  判断对象是否存在,并且为目录-f  判断对象是否存在,并且为常规文件-s  判断对象是否存在,并且长度不为0-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]

for循环

  • 方式1

for var in item1 item2 ... itemNdo    command1    command2    ...    commandNdone
for str in 'This is a string'do    echo $strdone
  • 方式2

for var in item1 item2 ... itemN; do command1; command2… done;

for循环获取分割字符串,以,为例

s="hello,world,hadoop,jike,ou"# 方法1OLD_IFS="$IFS"IFS=","arr=($s)IFS="$OLD_IFS"for x in ${arr[*]}do        echo $xdone# 方法2arr2=(${s//,/ })for x in ${arr2[*]}do        echo $xdone

while循环

while conditiondo    commanddone
#!/bin/bashint=1while(( $int<=5 ))do    echo $int    let "int++"done

case

case 值 in模式1)    command1    command2    ...    commandN    ;;模式2)    command1    command2    ...    commandN    ;;esac
echo '输入 1 到 4 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in    1)  echo '你选择了 1'    ;;    2)  echo '你选择了 2'    ;;    3)  echo '你选择了 3'    ;;    4)  echo '你选择了 4'    ;;    *)  echo '你没有输入 1 到 4 之间的数字'    ;;esac

函数

  • 示例1(无返回值)

#!/bin/bash# author:菜鸟教程# url:www.runoob.comdemoFun(){    echo "这是我的第一个 shell 函数!"}echo "-----函数开始执行-----"demoFunecho "-----函数执行完毕-----"
  • 示例2(有返回值)

#!/bin/bash# author:菜鸟教程# url:www.runoob.comfunWithReturn(){    echo "这个函数会对输入的两个数字进行相加运算..."    echo "输入第一个数字: "    read aNum    echo "输入第二个数字: "    read anotherNum    echo "两个数字分别为 $aNum 和 $anotherNum !"    return $(($aNum+$anotherNum))}funWithReturnecho "输入的两个数字之和为 $? !"
  • 示例3(接收参数)

#!/bin/bash# author:菜鸟教程# url:www.runoob.comfunWithParam(){    echo "第一个参数为 $1 !"    echo "第二个参数为 $2 !"    echo "第十个参数为 $10 !"    echo "第十个参数为 ${10} !"    echo "第十一个参数为 ${11} !"    echo "参数总数有 $# 个!"    echo "作为一个字符串输出所有参数 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73

包含文件

  • 包含文件可以用于封装公共文件

. filename   # 注意点号(.)和文件名中间有一空格或source filename
#!/bin/bash# author:菜鸟教程# url:www.runoob.com#使用 . 号来引用test1.sh 文件. ./test1.sh# 或者使用以下包含文件代码# source ./test1.shecho "菜鸟教程官网地址:$url"

看完上述内容,你们对shell语法是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0