shell 知识

variable 是变量名
$variable 是变量值  ${variable}
unset 变量名  清除变量的值
variable ? value / variable : ?value 对未赋值的 variable,显示系统错误信息
variable:= value 对未赋值的 variable,把value 值赋给它
variable :-value 对未赋值的 variable,把value 值赋给它,但不保存在其空间地址上
只读变量,不能改值
variable =value
readonly variable
妈的,变量赋值与之相关的,居然不让给有空格,真扯蛋
变量默认是字符型的,所以如果要进行四则运行,
则如下:
a=number;
let "a+=10"
echo $a

declare -i 变量名
把变量转为整形,其实当进行四则运算时,才会实现真正的转换
declare -r 变量名
把变量设置为只读

变量是无类型的,是弱类型的,所以如果没有定义或为空的变量,默认为字符0/数字0

列出所有的全局变量
env

声明一个为全局变量
APPSPATH=/usr/local #声明一个变量
export APPSPATH  # 声明为全局变量
echo $APPSPATH

清除环境变量
unset APPSPATH

其中
PATH全局变量是记录了可执行的文件路径,每个路径是用冒号分开,如果要添加新的路径,可以用
export PATH = "/新目录名":$PATH

参数:
($0表示脚本名,)
$1....n 表示第几个参数
$*/[email protected]:表示所有的参数
$#表示参数的总数
$?表示是否有错误,无时则返回0,
bash.sh内容如下:
#!bash.sh
echo "the script name is $0"
echo "the first paramter is $1"
echo "the total paramters is $#"
echo "the paramters are [email protected]"
echo "the paramters are $*"

单引号,双引号
单引号不解释变量,并且不会输出格式化的,如PHP中的源代码与浏览器的一样,双引号会解释其中的变量,并连格式化也一并输出

变量在命令替换上有三种情况可以使用:
$var/$(var)/`var` 其中`var`不格式化 $var 格式化 $(var)自定义变量中无法使用

退出,查看是否上一步的操作是否有错误 echo $? 如果没有错误,则为 0

num1=100
num2=99
$num1 -eq $num2 :如果相等,则 echo $? 为0
$num1 -ge $num2 : 如果num1 >= num2,则echo $? 为0
$num1 -gt $num2; 如果是 num1 > num2,则 echo $? 为0
$num1 -le $num2, $num1 -lt $num2, $num1 -neq $num2 类似
以上只适用于整数来说的,对于浮点数不行,有专门的函数可用
以上还可以用 [ "$num1" -eq "$num2" ]来代替 test $num1 -eq
$num2,方括号之间必须要有空格分格

字符测试
string:测试字符串 string 是否不为空,此字符不能用 [ "$string" ]
-n string:测试字符串string是否不为空
-z string:测试字符串 string是否为空
string1=string2:测试两字符是否相等
string1!=string2:测试两字符是否不相等

测试文件
test -d file 测试file 是否目录
test -e file 测试file 是否存在
test -f file 测试 file 是否为文件
test -r file 测试file 是否是进程可读文件
test -s file 测试file 的长度是否不为0
test -w file 测试file 是否是进程可写文件
test -x file 测试file 是否是进行可执行文件
test -L file 测试file 是否符号化链接

逻辑运算
! expression 为非
-a expression 为 and
-o expression 为or

条件判断
if express
then string
fi
或者
if express;then string
fi
可以嵌套
if expression
then
   if express
   then
   else
    ....
   fi
else
...
fi
或者:
if express
then
  ...
elif expression
then
  ....
elif expression
then
  ...
else
 ...
fi

case 语法
case "$var" in
value1)
    ....;;
value2)
    ...;;
..........
*)
    ........
esac
as:
#!/bin/bash
echo "input a number"
read ok
case "$ok" in
1)
    echo "1";;
2)
    echo "2";;
*)
    echo "0000"
esac
exit status 可自定义,在文档中用 echo $?可测试其中的输出值
时间: 2024-11-06 07:42:19

shell 知识的相关文章

每天一个shell知识--数组

1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL[@/*]}获得数组的所有值 3.${#arrayL[@]}获得数组长度 小例子如下: #!/bin/bash arrayList=(1 2 3 4 5) for i in ${arrayList[@]} do echo ${i} done echo "the length is ${#arrayL

看懂shebang吧,只需一点点shell知识,从此再也不犯强迫症

Python2: 开启一个terminal,输入下面命令: [email protected]:~$ vim helloA.py 在vim编辑器中,进入编辑模式(按i),输入下面的代码,然后退出编辑模式(按esc),保存文件(先按shift+ 分号,然后按wq保存退出) 1 #!/usr/bin/python 2 2 3 3 print "hello python2" 4 4 print 5/2 然后更改文件可执行权限 [email protected]:~$ chmod +x hel

[ shell编程 ] 前言

1.目的 (1)SHELL知识总结.好记性不如烂笔头,整理学习过的相关SHELL知识并结合自己的实践经验进行整理,内容不会涉及所有的知识点,只会涵盖个人最经常使用到.这样也可以为新手节约一部分实践,快速学习到工作中最常用的知识点. (2)知识拓展.有了这个基础支撑,就可以很容易发现自己的知识体系的盲点,补充拓展进行学习. (3)知识回顾.温故而知新,方便定期复习学习和实践过的SHELL知识,避免知识遗忘导致浪费曾经付出的宝贵时间. (4)知识分享和探讨. 2.思路    1.以工作中常见问题作为

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来解释执行程序,如果熟练掌握Shell脚本,可以让我们操作计算机变得更加轻松,也会节省很多时间. Shell应用场景 Shell能做什么 将一些复杂的命令简单化(平时我们提交一次github代码可能需要很多步骤,但是可以用Shell简化成一步) 可以写一些脚本自动实现一

第十天:shell编程基础与编写Makefile

一:shell编程基础 shell定义:shell是一个作为用户与linux系统间接口的程序.它允许用户向操作系统输入需要执行的命令.shell有很多中,linux系统中shell为bash. shell编程可以看作是一堆命令的集合.和windows中的bat程序类似的脚本程序.为解释性语言. 第一个shell程序是判断两个数字的大小. 1 #!/bin/bash 2 3 num1=10 4 num2=9 5 6 if test $num1 -gt $num2 7 then 8 echo $nu

让你快速学会Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来解释执行程序,如果熟练掌握Shell脚本,可以让我们操作计算机变得更加轻松,也会节省很多时间. Shell应用场景 Shell能做什么 将一些复杂的命令简单化(平时我们提交一次github代码可能需要很多步骤,但是可以用Shell简化成一步) 可以写一些脚本自动实现一

通过Shell开发企业级标准服务启动脚本案例(MySQL)

老男孩教育Linux高端运维班Shell课后必会考试题: 企业Shell面试题10:开发企业级MySQL启动脚本 说明: MySQL启动命令为: /bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 >/dev/null & 停止命令逻辑脚本为: mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/n

Shell编程速查手册

https://blog.atime.me/note/shell-scripting-summary.html 总结一下日常Shell脚本里常用的知识,忘记时方便查阅. 常见的shell 常见的Linux发行版里,默认的shell一般是dash(sh)或bash,不同的shell对脚本的支持也各不相同.若无特殊说明,以下shell知识都是基于Ubuntu 14.04 x86_64系统上的bash 4.3. Shell编程书籍 只看过Advanced Bash-Scripting Guide,简称

Shell编程之if语法练习(LNMP)全过程

大家好,我是延凯,本人原来在CSDN写作已经快一年了 都是相关Linux运维这方面的技术知识,现在搬到博客园也是我一直想的,本博客主要写Python,docker,shell等偏向开发云计算等知识点,谢谢各位,声明:(原先的CSDN也会不定时更新Linux运维等方面的知识!) #!/bin/bash # DATE:Wed Jan 17 1# [email protected]163.com #this is a yankerp # The Nginx service is being insta