[Linux]shell编程基础/linux基础入门

声明执行程序

#!/bin/bash


用来告诉系统使用/bin/bash 程序来执行该脚本。譬如python 脚本,可以这样写:

#!/usr/bin/python

赋值和引用

赋值公式:

变量名=值

取一个变量的值的时候,需要在变量名前面加上$ 符号,譬如:

var="hello bash"
echo $var

如果出现拼接,而且又没有空格为分隔符,这个时候就需要使用大括号将变量括住,如:

num=3
echo "this is the ${num}th"

其输出结果为:this is the 3th

shell默认下是进行字符串操作的。所以如果要计算的话就不能这么使用了

var=1
var=$var+1
echo $var

其输出结果为:1+1

对于数值计算的话有下面的方法

var=1
let "var+=1"          # let表示数学运算
var="$[$var+1]"       # $[]表示对括号内的表达式进行数学运算,与(())感觉概念是一样的
((var++))
var=$(($var+1))
var="$(expr "$var" + 1)"        # expr表示整数运算
var="`expr "$var" + 1`"

嫌太乱的话,建议记住(($var+1))就好了。只需要记住两个括号内的内容会进行计算就好了。

 

流程控制

if语句

if ...; then
  ...
elif ...; then
  ...
else
   ...
fi



一些常见的判断

[ -f "file_path" ]     # 判断文件是否存在
[ -x "file_path" ]    # 判断文件是否具有可执行权限
[ -n "$var" ]           # 判断$var变量是否存在
[ "$var1" = "$var2" ]    # 判断$var1和$var2是否相等


[]用来表示条件测试。注意空格,括号前后都需要空格。

&&和||
跟其它大部分语言一样,&&和||的意思都是差不多的。
&&:如果第一个条件为ture则检查第二个条件/执行第二条语句;
||:如果第一个条件为false则检查第二个条件/执行第二条语句;
所以就可以这么用了:

[ -r "${file_path}" ] || { echo "Cannot read ${file_path}";exit 1; }

意思是,如果文件不可读,则打印错误信息,并退出。

case语句
case是一个用来匹配字符串的表达式,不是数字哦。
case表达式

case ... in
...)
  ...;;
esac
#!/bin/bash

case "$1" in
"1")
  echo 1;;
"2")
  echo "two";;
*)
  echo "your input is $1";;
esac

循环
while表达式

while ...; do
  ...
done

for表达式

for var in ...; do
  ...
done

这两个表达式都比较简单,没啥需要特别说明的。我发现不同的系统之间有些差异。我发现红帽是可以使用下面的表达式的,但是Debian却不可以。不知道是系统版本引起还是系统本身存在差异的缘故,我没有深究这个。

for ((i=0;i++;i<10)); do
  ...

done

shell函数

function_name(){
    #body of function
}

函数无论对于任何语言来说都是需要最基本掌握的。Shell的函数只需要在调用之前定义就好了。跟C语言一样,但不需要声明,跟C语言还是有区别的。
Shell函数定义的时候不用写形参。调用的时候按照空格隔开多个参数传入就可以了。然后使用$1、$2、$3...这些参数来调用。
下面是一个简单的递归调用例子:

#!/bin/bash

recursion(){
  echo $1;
  if [ "$1" -eq "0" ]; then
    echo "done"
  else
    recursion $(($1-1))
  fi
}
echo "start";
recursion 5;

上面虽然是一个很简单的例子,但是阐述了函数如何调用,如何传参。

 

时间: 2024-08-03 01:50:41

[Linux]shell编程基础/linux基础入门的相关文章

Linux shell编程基础 三、shell的基本结构

shell结构大体是由设定变量.内置命令.shell的语法结构.函数组成. 使用实例说明:test.sh #!/bin/bash #说明使用/bin/bash作为这个脚本的解释器 #定义一个函数 function my_fun () { echo "Hello, $1,today is $2" } #定义连个变量 name=$1 today=`date` #函数调用 my_fun "$name" "$today" 上面的这个脚本要想运行还需要做一

linux shell编程中date命令的用法

在linux shell编程中,经常用到日期的加减运算 以前都是自己通过expr函数计算,很麻烦 其实date命令本身提供了日期的加减运算 非常方便.例如:得到昨天的时间 date +%Y%m%d --date="-1 day" date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] date 可以用来显示或设定系统的日期与时间. 令1.在显示方面,使用者可以设定欲显

linux shell编程 sed指令问题

问题描述 linux shell编程 sed指令问题 在同一个目录下有两个文件oracle-ds.xml,postgresql-ds.xml 我分别执行指令 sed -n '/^ */p' oracle-ds.xml sed -n '/^ */p' postgresql-ds.xml 为什么oracle-ds.xml 的可以匹配到,而postgresql-ds.xml无法匹配到,两个文件都有 查了半天没弄懂,求指点 我粘下文件内容: oracle-ds.xml: Oracle9i 2330201

(C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹

原文 (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹  (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) Windows Shell 编程,即 Windows 外壳编程.我们所看到的资源管理器以及整个桌面,都是一个 Shell. 关于 Windows 外壳的基本概念,我这里不做详细介绍,不了解的朋友,可以看看 姜伟华 的 Windows外壳名字空间的浏览. 好,现在让我们从基础学起,早日做出一个强大的资源管理器软件.(偶也是初学者,多多指教) 1 -

Linux Shell 编程实战技巧

避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇到以下几个问题. 路径问题:当前目录往往不是脚本文件所在目录.因此,脚本在引用其使用的外部文件,如配置文件和其它脚本文件时,无法方便得使用相对路径. 命令找不到问题:脚本中使用到的一些外部命令,在手工执行脚本的时候可以正常调用.但是在定时任务下运行则可能出现脚本解析器找不到相关命令的问题. 脚本重复运行问题

Linux shell编程 12 ---- 管道+I/O重定向

 1 管道简介      1 管道技术是Linux的一种基本的进程间通信技术,它利用先进先出排队模型来指挥进程间的通信.对于管道,我们可以形象的理解为连接两个实体的一个单向连接器      2 Shell编程中管道符号是"|",命令直接利用管道进行通信的一般格式         command1 | command2 | command3 | ... | commandn         command1-commandn是n个命令,如果没有管道那么结果将会直接显示在Shell中,当S

Linux shell编程 10 ---- 循环结构

 1 for循环     1 for循环是Linux Shell中常用的结构,for循环有三种结构:一种是列表for循环,第二种是不带列表的for循环,第三种是类C风格的for循环.          2 列表for循环        for variable in list        do            statement        done     3 不带列表for循环         for variable         do              stateme

Linux shell编程 9 ---- 判断+运算符

 1 判断     1 简单if语句        if expression        then               statement               statement        fi         如果then处在同一行,要在expression后面加上";"          2 if/else结构        if expression        then                statement               st

linux shell 编程

shell 编程 1.简述 利用vi等文本编辑器编写Shell脚本的格式是固定的,如下: #!/bin/bash #comments Your commands go here 首行中的符号#!告诉系统其后路径所指定的程序bash即是解释此脚本文件的Shell程序. 除第一行外,以#开头的行就是注释行,直到此行的结束.如果一行未完成,可以在行尾加上",这个符号表明下一行与此行会合并为同一行. 2.变量 有环境变量.内部变量.用户变量. Shell Script是一种弱类型语言,使用变量的时候无需