AI智能
改变未来

shell脚本积累

$0 这个脚本的执行名字

$n 这个脚本的第n个参数

$* 这个脚本的所有参数

$# 这个脚本参数个数

$? 上一个指令的返回值,0代表没有错误

 

变量名外加花括号,识别边界

echo \”I am good at ${skill}Script\”

aaa=${var} 将变量var的内容赋给aaa

aaa=$(echo $PATH) 括号里必须为命令,将命令的结果赋给aaa

 

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt ${file#*.}:删掉第一个 . 及其左边的字符串:file.txt ${file##*.}:删掉最后一个 . 及其左边的字符串:txt ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*}:删掉第一个 / 及其右边的字符串:(空值) ${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

 

字符串:

单引号 ‘ ’ ——任何字符都原样输出,变量无效

双引号 “ ” ——可以有变量、转义字符

反引号 ` ` ——将特殊符号转义成普通字符,识别command

str=\”Hello, I know you are \\\”$your_name\\\”! \\n\”

echo -e $str -e可以输出转义字符

-c 两个echo之间不换行

输出结果为:

Hello, I know you are \”runoob\”!

 

系统识别将前两个单引号组合,后两个组合

 

 

取字符串长度

string=\”abcd\” echo ${#string} #输出 4

 

算数运行

result=$[a+b] equal result=`expr $a + $b `

 

 

 

关系运算符:

-eq 是否相等 ==

-ne 是否不等 !=

-gt 大于 >

-lt 小于 <

-ge >=

-le <=

布尔运算:

不等于 !=

或 -o

与 -a

 

 

if [ -f $file ]

then

command

elif [ ]

then

command

else

command

fi

 

let命令 let A++ 变量不需要加$

let 表达式 等于 shell((数学运算表达式))

 

 

函数

funWithReturn(){ echo \”这个函数会对输入的两个数字进行相加运算…\” echo \”输入第一个数字: \” read aNum echo \”输入第二个数字: \” read anotherNum echo \”两个数字分别为 $aNum 和 $anotherNum !\” return $(($aNum+$anotherNum)) /return $[a+b] } funWithReturn echo \”输入的两个数字之和为 $? !\”

 

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数

$$

脚本运行的当前进程ID号

$!

后台运行的最后一个进程的ID号

$@

与$*相同,但是使用时加引号,并在引号中返回每个参数。

$-

显示Shell使用的当前选项,与set命令功能相同。

$?

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

 

引用脚本 . filename

. ./filename

 

set -e 当命令的返回值为非零状态时,则立即退出脚本的执行。如果有脚本调用,被调脚本不会被主脚本的影响

 

一个shell中定义的变量只能在一个shell中使用,其他shell不可使用,若想使其生效,需用export命令对已定义的变量进行输出,export命令将使系统在创建每一个新的shell时,定义这个变量的一个拷贝

 

basename,剥除路径与后缀,只保留文件名

 

set -e bash如果任何语句的执行结果不是true则应该退出。可以使用set -o errexit,它的作用与set -e相同。

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell脚本积累