首页 > 系统相关 >shell语法

shell语法

时间:2023-01-08 18:34:10浏览次数:65  
标签:expr2 shell expr echo 语法 expr1 printf test

expr命令,echo命令,printf命令,test命令与判断符号[],判断语句:

expr命令:

expr会在stdout中输出结果。
如果为逻辑关系表达式,则结果为真,stdout1,否则为0
exprexit code( 相当于 return 值 )
如果为逻辑关系表达式,则结果为真,exit code0,否则为1

echo命令:

命令:

echo -e "Hi \c" # -e 开启转义 \c 不换行
echo "114514^^^666"

输出结果:

Hi 114514^^^666


test:--------------------------------====------------------------------------

printf命令:

printf "%10d.\n" 123  # 占10位,右对齐
printf "%-10.2f.\n" 123.123321  # 占10位,保留2位小数,左对齐
printf "My name is %s\n" "yxc"  # 格式化输出字符串
printf "%d * %d = %d\n"  2 3 `expr 2 \* 3` # 表达式的值作为参数

test命令与判断符号[]:

-eq :equal(相等)
-ne :not equal(不等) 
-gt  :greater than(大于)
-ge :greater than or equal(大于或等于)
-lt   :less than(小于)
-le  :less than or equal(小于或等于)

&& 表示与,|| 表示或
二者具有短路原则:
expr1 && expr2:当expr1为假时,直接忽略expr2
expr1 || expr2:当expr1为真时,直接忽略expr2
表达式的exit code0,表示真;为非零,表示假。(与C/C++中的定义相反)

判断语句:

用法与C++差不多:

a=3
b=4
if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
then
    echo ${a} 在范围内
fi

总结:

#! /bin/bash

#expr1 && expr2:当expr1为假时,直接忽略expr2
#expr1 || expr2:当expr1为真时,直接忽略expr2

test -e test.sh && echo "exist" || echo "Not exit"
echo $?
test -e test10086.sh && echo "exit" || echo "Not exit"
echo $?
printf "=====================\n"
a=3
b=4
echo $(expr $a '>' $b)
test $a -eq $b
echo $?
printf "=====================\n"
if [ $a -lt $b ]
then
    printf "YES\n"
fi
printf "=====================\n"
expr 3 '<' 4
printf "return :%d\n" $?
if expr 3 '<' 4
then 
    printf "YES\n"
fi
printf "=====================\n"
[ 3 '<' 4 ]
printf "return :%d\n" $?
if [ 3 '<' 4 ]
then 
    printf "YES\n"
fi
printf "=====================\n"
if ! [ $a '<' $b ]
then
    printf "%d -bt %d,hhh~~\n" $a $b
else
    printf "%d -lt %d,www~~\n" $a $b
fi
printf "=====================\n"
if [ $a -eq 1 ]
then
    echo $ac等于1
elif [ $a -eq 2 ]
then
    echo ${a}等于2
elif [ $a -eq 3 ]
then
    echo ${a}等于3
else
    echo 其他
fi

标签:expr2,shell,expr,echo,语法,expr1,printf,test
From: https://www.cnblogs.com/Aidan347/p/17035055.html

相关文章

  • DevOps实战系列【第十章】:详解Jenkins Pipeline基本概念和语法
    个人亲自录制全套DevOps系列实战教程:​​手把手教你玩转DevOps全栈技术​​流水线基本概念官方中文手册:​​​https://www.jenkins.io/zh/doc/book/pipeline​​​​我们......
  • MySQL17 - DML基本语法 - 增删改
    DML基本语法-增删改DATE和DATETIME两个类型的区别DATE是短日期:只包括年-月-日默认格式:%Y-%m-%dDATETIME是长日期:包括年-月-日-时-分-秒默认格式:%Y-......
  • MSSQL数据库提权之XP_cmdshell提权
    xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。启用xp_cmdshell:EXEC......
  • MySQL16 - DDL基本语法
    DDL基本语法创建学生表,包括学号、姓名、年龄、性别、邮箱地址CREATETABLEt_student( noINT, nameVARCHAR(32), sexCHAR(1)DEFAULT'm', ageINT(3), emailV......
  • LLVM IR 代码生成与解析器、抽象语法树
    LLVMIR代码生成与解析器、抽象语法树概述将基于词法分析器,为Kaleidoscope构建一个完整的解析器(Parser)。通过解析器,我们可以定义并构造抽象语法树(AbstractSyntaxTre......
  • UI Automation PowerShell Extensions使用,编写powershell脚本实现ui自动化操作 简单实
    借鉴这几个网站。使用PowerShellUI自动扩展操作应用(自动化)-PMP风格(hatenablog.com)UIAutomationPowerShellExtensions的Download(再分发)–code-lab.netPowe......
  • go in action学习,go语法一些特殊点
    1.如果接口类型只包含一个方法,那么这个类型的名字以er结尾。如果接口类型内部声明了多个方法,其名字需要与其行为关联。2.如果要让一个用户定义的类型实现一个接口,这个用......
  • powershell简单的使用gui
    powershell作为win的官方shell,可以调用.net对象。让它可以无所不能。例如给脚本加上图形界面更直观。而且这是win占用文件体积最小的图形程序。几行文本就能构建一个gui程......
  • Markdown语法教程
    二级标题三级标题四级标题快捷键ctrl+1,2,3,4,5,6加粗用**1**我是加粗的文字快捷键ctrl+B斜体用*1*我是斜体的文字斜体并加粗用***1****我是斜体并......
  • 循环语句的语法:while/for/do..while/break和continue的使用以及冒泡法代码实现
    1、将两个变量的值交换.2、将一个数组中的数倒序输出. 3、找出数组里面最大的值,并返回 4、将数组所有的元素相加,将结果返回 5、将两个等长数组......