1、变量

#后接的是注释。#!后接的是特殊的注释,表示告诉系统后面是要用于执行程序所需要的参数。

shell中变量不需要声明。

Shell变量是区分大小写。

read (变量名)用于读入数据

#!/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
HelloWorld(输入)
$myvar now equals HelloWorld

 

 

 

2、环境变量:

$HOME ? ? ? ? ?当前用于的home目录

$PATH ? ? ? ? ? 用冒号分隔的用来搜索命令的目录

$PS1 ? ? ? ? ? ? ? ?命令提示符,一般指$字符。

$PS2 ? ? ? ? ? ? ? 二级提示符,用于提示后续输入。一般指>字符

$IFS ? ? ? ? ? ? ? ?输入域分隔符,用来分隔单词。一般是空格,制表符,换行符等单字符

$0 ? ? ? ? ? ? ? ? ? Shell脚本的名字

$# ? ? ? ? ? ? ? ? ? 传递给脚本的参数个数

$$ ? ? ? ? ? ? ? ? ? Shell脚本的进程号

3、参数变量

$1,$2…. ? ? ? ? 脚本程序的参数

$* ? ? ? ? ? ? ? ? ? 输出所有参数。并用环境变量IFS中第一个字符分隔

$@ ? ? ? ? ? ? ? ? 同$*,但是更加智能。即当IFS为空或者不使用IFS时,同样会分隔参数

#!/bin/sh

salutation="Hello"
echo $salutation
echo "The program $0 is now running"
echo "The second parameter was $2"
echo "The first parameter was $1"
echo "The parameter list was $*"
echo "The user's home directory is $HOME"

echo "Please enter a new greeting"
read salutation

echo $salutation
echo "The script is now complete"
exit 0

 

 

?输出结果:

 ./try_var foo var baz(读入,脚本名+参数)
Hello
The program ./try_var is now running
The second parameter was var
The first parameter was foo
The parameter list was foo var baz
The user's home directory is /home/bo-jwolf
Please enter a new greeting
Sire(读入)
Sire
The script is now complete