Shell命令学习
How To Shell ?
if 判断
在Shell脚本中,可以使用 if语句进行条件判断。if语句的基本结构如下:
1 | if [ condition ] |
在上述代码中,condition是一个表达式,根据其结果(真或假),决定执行哪个代码块。如果 condition为真,则执行 then块中的代码;如果 condition为假,则执行 else块中的代码(如果有)。
下面是一些常见的条件表达式及其使用方法:
字符串比较:
-z string:如果字符串为空,则为真。-n string:如果字符串不为空,则为真。string1 = string2:如果两个字符串相等,则为真。string1 != string2:如果两个字符串不相等,则为真。
数值比较:
num1 -eq num2:如果num1等于num2,则为真。num1 -ne num2:如果num1不等于num2,则为真。num1 -lt num2:如果num1小于num2,则为真。num1 -gt num2:如果num1大于num2,则为真。num1 -le num2:如果num1小于或等于num2,则为真。num1 -ge num2:如果num1大于或等于num2,则为真。
文件/目录判断:
-e file:如果文件/目录存在,则为真。-f file:如果文件存在且为普通文件,则为真。-d directory:如果目录存在,则为真。
下面是一个简单的示例,演示如何在Shell中使用 if语句进行条件判断:
1 |
|
在上述示例中,如果 $number的值等于42,则输出”The number is 42.”,否则输出”The number is not 42.”。
请注意,Shell中的条件表达式要用方括号 []括起来,并且每个表达式的左右两侧都要有空格。另外,then和 else之后需要用换行符或分号 ;分隔。
case 跳转
在Shell脚本中,case语句用于根据变量的不同取值执行不同的操作。case语句的基本结构如下:
1 | case variable in |
在上述代码中,variable是需要进行匹配的变量,pattern是要匹配的模式,;;表示一个模式匹配结束,*表示默认情况下的操作。
下面是一个示例,演示如何在Shell中使用 case语句:
1 |
|
在上述示例中,根据 $fruit的取值,case语句会匹配相应的模式,并执行对应的操作。如果 $fruit是”apple”,则输出”It’s an apple.”;如果 $fruit是”banana”,则输出”It’s a banana.”;如果 $fruit是”orange”,则输出”It’s an orange.”;如果 $fruit不匹配任何模式,则输出”It’s an unknown fruit.”。
请注意,在每个模式结束时,需要使用 ;;表示匹配结束,以确保只执行对应的操作块。最后,esac表示 case语句的结束。
read 读取
在Shell脚本中,read命令用于从标准输入(通常是键盘)读取用户输入,并将输入的值赋给一个或多个变量。read命令的基本语法如下:
1 | read [options] variable1 variable2 ... |
在上述语法中,variable1、variable2等是要接收输入值的变量名。当用户输入完成后,read命令将输入值赋给这些变量。
以下是一些常用的 read命令选项:
-p prompt:显示一个提示符prompt,然后等待用户输入。-s:静默模式,用户输入时不显示在屏幕上,用于处理密码等敏感信息。-t timeout:设置超时时间(秒),如果用户在指定的超时时间内未输入,则read命令会退出。
下面是一个简单的示例,演示如何在Shell中使用 read命令:
1 |
|
在上述示例中,首先显示提示信息,要求用户输入姓名。然后,read命令将用户输入的值赋给变量 name。接着,显示另一个提示信息,要求用户输入年龄。再次使用 read命令将用户输入的值赋给变量 age。最后,脚本会输出类似于”Hello, John! You are 30 years old.”的消息,其中 $name和 $age会被用户输入的值替换。
当脚本执行到 read命令时,它会等待用户输入,并在用户按下回车键后继续执行下一条命令。
echo 输出
在Shell脚本中,echo命令用于在终端上输出文本或变量的值。echo命令的基本语法如下:
1 | echo [options] [string] |
在上述语法中,string是要输出的文本或变量。echo命令会将该文本或变量的值显示在终端上。
以下是一些常用的 echo命令选项:
-n:不输出行末的换行符,即不换行。-e:启用特殊字符的解析。例如,可以使用\n表示换行符、\t表示制表符等。
下面是一些示例,演示了在Shell中使用 echo命令的不同用法:
1 |
|
在上述示例中,echo命令用于输出不同的信息。第一个 echo语句输出字符串”Hello, World!”。第二个 echo语句输出变量 $name的值,结果为”My name is John.”。第三个 echo语句使用了 -n选项,不会在输出之后换行,而是继续输出下一个 echo语句的内容。最后一个 echo语句使用了 -e选项,并在字符串中使用了特殊字符 \n表示换行和 \t表示制表符,输出两行文本和一个制表符。
需要注意的是,当输出字符串包含变量时,可以使用双引号或不使用引号。双引号将允许解析变量的值,而不使用引号将直接将变量和文本拼接输出。
这就是在Shell中使用 echo命令输出文本或变量的基本方法。如有任何进一步的问题,请随时提问。
exit 1 非零状态[yi’chang]退出
在Shell脚本中,exit 1表示脚本以非零的状态码退出。exit命令用于终止当前正在执行的Shell脚本,并指定一个退出状态码。
在Unix和类Unix系统中,退出状态码是一个用于表示脚本执行结果的整数值。按照约定,如果脚本成功执行并且没有错误,退出状态码为0。非零的退出状态码通常表示脚本执行过程中发生了错误或异常。
exit 1表示脚本以状态码1退出,它通常用于指示脚本执行失败或遇到了某种错误情况。状态码可以是从1到255的任何整数值。具体状态码的含义可以根据脚本的需要进行定义和解释。
当脚本执行到 exit 1时,它将立即终止脚本的执行,并将状态码1返回给调用脚本的进程。在命令行中执行脚本时,可以通过特殊变量 $?来获取最后一次执行的命令的退出状态码。
以下是一个示例,展示了在脚本中使用 exit 1的情况:
1 |
|
在上述示例中,脚本首先检查文件 myfile.txt是否存在。如果文件不存在,脚本将输出一条错误消息,并使用 exit 1退出状态码1来表示脚本执行失败。
通过使用适当的退出状态码,可以在脚本执行期间检测和处理错误情况,以便在脚本结束后能够了解脚本的执行结果。
希望这个解释对你有帮助。如果还有其他问题,请随时提问。