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