[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;
复制代码
上面虽然是一个很简单的例子,但是阐述了函数如何调用,如何传参。

 本文转自 Ron Ngai 博客园博客,原文链接:http://www.cnblogs.com/rond/p/3962232.html  ,如需转载请自行联系原作者


相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
3月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
242 73
|
1月前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
78 3
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
111 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
52 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
84 12
|
2月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
63 1