shell脚本小结

 2023-09-05 阅读 18 评论 0

摘要:为什么80%的码农都做不了架构师?>>> 变量赋值 shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z) 或者_中间不能有空格,可以使用下划线(_)不

为什么80%的码农都做不了架构师?>>> hot3.png

变量赋值

shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:

  1. 首个字符必须为字母(a-z,A-Z) 或者_

  2. 中间不能有空格,可以使用下划线(_)

  3. 不能使用其他标点符号

a="hello world" #not have any spaces
echo "A is: " $a
echo "B is: ${a}!"

(注意=两侧不能有空格)

test命令

test命令是shell内部命令,它计算作为其参数的表达式是真还是假。

如果表达式为真,则test返回0(注意与C语言0表示false不同),如果表达式为假,返回非0。

shell提供了另外一个调用test命令的方式,就是用方括号[]来代替单词test。

调用test命令的格式为:

test expr1 opr expr2 或是 [ expr1 opr expr2 ]
test opr expr1 或是 [ opr expr1 ]

(注意方括号与表达式之间的空格必须存在)

逻辑运算符

  -a  expr1 -a expr2  逻辑与-o  expr1 -o expr2  逻辑或!  !expr1      逻辑非

数值判断

-eq  num1 -eq num2  是否相等
-ne  num1 -ne num2  是否不相等
-gt   num1 -gt num2  是否大于
-ge  num1 -ge num2  是否大于等于
-lt    num1 -lt num2  是否小于
-le   num1 -le num2  是否小于等于

字符串判断

=  str1 = str2  字符串是否相等
!=  str1 != str2  字符串是否不等
-n  -n str1    字符串长度是否不等于0
-z  -z str2    字符串长度是否等于0

文件判断

-r  -r filename  文件是否存在且可读
-w  -w filename  文件是否存在且可写
-s  -s filename  文件是否存在且长度非0
-f  -f filename  文件是否存在且是普通文件
-d  -d filename  文件是否存在且是一个目录

命令行参数/位置变量

$0  脚本的名字
$1, $2, ..., $9  脚本第1个到第9个命令行参数
$#  命令行参数的个数
$@ 或是 $*  所有命令行参数
$?  最后一条命令的退出状态
$$  正在执行进程的ID(PID)

    给位置变量赋值:

set One Two Three
echo $1 $2 $3

    结果显示:One Two Three

shift命令:

    这条命令可以对位置参数进行移动,每次调用都会导致:$1=$2、$2=$3、$3=$4....

    以下代码可以打印出所有的参数

while [ [-n "$1"] ]; doecho $1shift
done

    在对变量进行判断时最好将变量用双引号括起来,这样可以避免参数包含空格或是TAB带来的问题。            

如:”$HOME“、"$#"

变量替换(赋值)

    shell提供了变量替换功能,使用户能够检查变量的值并根据选项改变它的值。

$variable    保存在variable中的值
${variable}    保存在variable中的值
${variable:-string}  如果variable的值非空,则值为variable,否则值为string
${variable:+string}  如果variable的值非空,则值为string,否则值为空
${variable:=string}  如果variable的值非空,则值为variable,否则值为string且variable的值设置为string
${variable:?string}  如果variable的值非空,则值为variable,否则显示string并退出

单中括号和双中括号

    使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错。

$ type test
test is a shell builtin
$ type '['
[ is a shell builtin
$ type '[['
[[ is a shell keyword

编写帮助文档函数

help()
{
cat << HELP   #start$0 -- change the name of an xterm, gnome-terminal or kde konsoleUSAGE: $0 [-h] "string_for_titelbar"OPTIONS: -h help textEXAMPLE: $0 "cvs"
HELP               #endexit 0
}



转载于:https://my.oschina.net/xlplbo/blog/385046

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/1544.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息