Linux程序设计--shell程序设计基础(一)

shell语法

一 变量

1.普通变量

在默认情况下变量都被看作字符串并以字符串来存储。当你为变量赋值时你只需要使用变量名,来访问变量内容时需要在变量名前面加上一个$符号,使用方式如下:

$state=hello
$echo $state
hello

变量配合引号的高级使用:
源代码

#!/bin/sh

myvar="Hi there"

echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar

echo Enter some text
read myvar

echo 'myvar' now equals $myvar
exit 0

运行结果如下

Hi there
Hi there
$myvar
$myvar
Enter some text
Hello Word
$myvar now equals Hello World

2.环境变量

变量 说明
$HOME 当前用户的家目录
$PATH 系统搜索路径的列表
$PS1 命令提示符,通常是$字符
$PS2 二级提示符,用来提示后续输入,通常为>字符
$0 输入脚本的名字
$1/$2/$3 脚本的第1 2 3个参数
$# 传递给脚本的参数个数
$$ shell脚本的进程号
$IFS 输入域分隔符,一般与$*配合使用
$* 在一个变量中列出所有的参数,使用$IFS变量分隔开
$@ 在一个变量中列出所有的参数,常用来代替$*使用,简单方便

下面用一个简单的例子对上述变量进行阐述:

$IFS=''
$set foo bar bam
$echo "$@"
foo bar bam
$echo "$*"
foobarbam
unset IFS
$echo "$*"
foo bar bam

二 条件语句,test或[

下面两段代码意义相等

if test -f fred.c
then
...
fi
if [ -f fred.c ]
then
...
fi

test命令有很多选项,具体使用时可以详细查询。

三 控制结构

1.if语句

if语句的常用语法

if condition1
then 
    statements
elif condition2
then
    statements
else
    statements
fi

2.for语句

for variable in values
do 
    statements
done

在使用for循环时,常用通配符进行扩展。

3.while语句

while conditions
do
    statements
done

4.until语句

until condition
do
    statements
done

循环将反复执行,直到条件为真。

5.case语句

以下面的例程进行说明

#!/bin/sh

echo "Is this morning? Please answer yes or no"
read timeofday

case "$timeofday" in 
yes | y | YES | Y) 
    echo "Good Morning"
    echo "early this morning"
    ;;
[Nn]*)
    echo "Good Afternoon"
    ;;
*)
    echo "Answer is not recognized"
    echo "Please answer yes or no"
    exit 1
    ;;
esac

本示例说明了case条件下多行代码的写法和每条结束语句中需要使用;;符号进行分割。

6.命令列表

命令连接常用&&||,使用方式也类似于C语言中的and和or。如果连接的是一个代码语句块,该语句块可以使用{}花括号括起来。

四 输出重定向

ls -1 > lsoutput.txt

这条命令把ls命令的输出保存到文件lsoutput.txt中。
文件描述符0代表一个程序的标准输入,1代表标准输出,2代表标准错误输出。

ps >> lsoutput.txt

上条语句>>将输出内容附加到lsoutput.txt中,而不是覆盖文件。

猜你喜欢

转载自blog.csdn.net/yk150915/article/details/78937397