Shell 编程

Posted 吃饭睡觉打豆豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell 编程 相关的知识,希望对你有一定的参考价值。

变量:

  1 . 变量声明  eg :

#:name=‘EKO‘
#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl  //声明只读变量

  2. 变量使用  eg:

#:echo $name
# : echo ${name}  

  3. 删除变量 eg:

#: uset name

  4. 变量类型:

  •  局部变量  eg:
#:local name=‘eko‘
  •  环境变量  eg:
#:export name=‘EKo‘

  5 . 查看变量

#:printenv     //查看当前所有环境变量
#:set         //查看当前所有变量

格式:

 shell 脚本第一行必须是   #!/bin/bash

条件判断:(整数比较,字符比较,文件判断)

  表达式:

    [ expression ]
    [[ expression ]]
    test expression

  分支语句:

分支语句
if  判断条件
then
    statement1
    statement2
    ...
else
    ...
fi

多分支
if  判断条件
then
    statement1
    statement2
    ...
elif
    statement1
    statement2
    ...
else
    statement1
    statement2
    ...      
fi

  

整数比较:

-eq:判断是否数值相等 eg: # [ $a -eq $b ]  相等返回1  不等返还0
-ne :判断是否数值相等 eg: # [ $a -ne $b ]  相等返回0  不等返还1
-gt : 大于判断
-lt : 小于判断
-ge:大于或等于
-le : 小于或等于

  例子:判断文件大小  如果大于100行 则输出大文件  否则 输出小文件

#!/bin/bash

LINES=`wc /etc/passwd`
echo $LINES
NEWLINES=`echo $LINES | cut -d‘ ‘ -f1`
[ $NEWLINES -gt 100 ] && echo ‘this is big file‘ || echo ‘this is small file‘

 或者

#!/bin/bash
FILE_PATH=‘/home/eko/passwd‘
if [ `wc -l $FILE_PATH | cut -d‘ ‘ -f1` -gt 100 ]
then 
echo ‘this is big file‘
else 
echo ‘this is small file‘
fi

文件测试

-e filename  如果 filename存在,则为真  [ -e /var/log/syslog ]
-d filename  如果 filename为目录,则为真  [ -d /tmp/mydir ]
-f filename  如果 filename为常规文件,则为真  [ -f /usr/bin/grep ]
-L filename  如果 filename为符号链接,则为真  [ -L /usr/bin/grep ]
-r filename  如果 filename可读,则为真  [ -r /var/log/syslog ]
-w filename  如果 filename可写,则为真  [ -w /var/mytmp.txt ]
-x filename  如果 filename可执行,则为真  [ -L /usr/bin/grep ]
filename1-nt filename2  如果 filename1比 filename2新,则为真  [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2  如果 filename1比 filename2旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ]

 

#shell判断文件夹是否存在
 
#如果文件夹不存在,创建文件夹
if [ ! -d "/Top" ]; then
 mkdir -p /Topfi
 
#shell判断文件,目录是否存在或者具有权限
 
folder="/Top"
file="/Top/test.txt"
 
# -x 参数判断 $folder 是否存在并且是否具有可执行权限
if [ ! -x "$folder"]; then
 mkdir "$folder"
fi
 
# -d 参数判断 $folder 是否存在
if [ ! -d "$folder"]; then
 mkdir "$folder"
fi
 
# -f 参数判断 $file 是否存在
if [ ! -f "$file" ]; then
 touch "$file"
fi

# -n 判断一个"变量"是否有值
if [ ! -n "$file" ]; then
 echo "$file 变量为空!"
 exit 0
fi
 
# 判断两个变量的字符串内容是否相同
if [ "$file1" = "$file2" ]; then
 echo "$file1 equal $file2"
else
 echo "$file1 not equal $file2"
fi

 

退出脚本

exit [状态码]: 退出脚本

如果没有指定状态码,则最后执行一条命令的状态码就是退出状态码

 

位置参数 / 特殊参数

#!/bin/bash
echo "first argument is $1"
echo "second argument is $2"

  $1 : 第一个参数

  $2 : 第二个参数

  ...

  $# : 参数的个数

  $* : 参数列表

  [email protected] : 参数列表

[email protected]:~$ ./test.sh first second
first argument is first
second argument is second

  

 

以上是关于Shell 编程 的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

Linux bash基础特性二

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC