前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell 极简教程Hello World变量函数运算符字符串数组for 循环if elseShell test 命令

Shell 极简教程Hello World变量函数运算符字符串数组for 循环if elseShell test 命令

作者头像
一个会写诗的程序员
发布2018-08-17 14:07:36
1.1K0
发布2018-08-17 14:07:36
举报
文章被收录于专栏:一个会写诗的程序员的博客

Hello World

代码语言:javascript
复制
vim hello_world.sh

#!/bin/bash
echo "Hello World !"

chmod +x *.sh
./hello_world.sh 
Hello,World!

变量

代码语言:javascript
复制
#!/bin/bash
echo "Hello,World!"

a=1
b=`expr $a + 1`
echo $b

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 除了显式地直接赋值,还可以用语句给变量赋值

函数

Jietu20171118-235519.jpg

其中, $1 表示调用该函数传入的第1个参数。

代码语言:javascript
复制
 17 say_nowtime(){
 18         now_time=`date`
 19         echo "$1 Say now time is:  $now_time "
 20 }
 21 
 22 say_nowtime "Jack"

说明:

1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。

运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):

代码语言:javascript
复制
#!/bin/bash
echo "Hello,World!"

a=1
b=`expr $a + 1`
echo $b

需要注意的是,$a + 1 之间必须要有空格,这跟大部分的编程语言不同。

字符串

数组

image.png

需要注意的是,数组之间的元素时用空格隔开的,不是用的逗号。

访问数组元素的语法是: ${array[i]}

另外,通过

${array[*]} ${array[@]}

可以访问数组所有元素。

获取数组的长度 ${#array[*]} :

image.png

有几个特殊字符用来处理参数:

参数处理

说明

$#

传递到脚本的参数个数

$*

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

$$

脚本运行的当前进程ID号

$!

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

$@

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

$-

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

$?

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

for 循环

与其他编程语言类似,Shell支持for循环。 for循环一般格式为:

代码语言:javascript
复制
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行:

代码语言:javascript
复制
for var in item1 item2 ... itemN; do command1; command2… done;

当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名。 in列表是可选的,如果不用它,for循环使用命令行的位置参数。 例如,顺序输出当前列表中的数字:

代码语言:javascript
复制
for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

if else

if 语句语法格式:

代码语言:javascript
复制
if condition
then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):

代码语言:javascript
复制
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 详见:http://www.runoob.com/linux/linux-shell-test.html


源代码:

代码语言:javascript
复制
$ cat hello_world.sh 
#!/bin/bash
echo "Hello,World!"

a=1
b=`expr $a + 1`
echo $b



array=(1 2 3 4 5 "x" "y" "z")
echo ${array[*]}
echo ${array[@]}
echo "array[1] = ${array[1]}"
echo "array length = ${#array[*]}"


say_nowtime(){
    now_time=`date` 
    echo "$1 Say now time is:  $now_time "
}

say_nowtime "Jack"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hello World
  • 变量
  • 函数
  • 运算符
  • 字符串
  • 数组
  • for 循环
  • if else
  • Shell test 命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档