vim test.sh
#!/bin/bash
echo "Hello World !"
sh test.sh
#!
是一种约定俗成的标记,他来告诉系统应该使用什么样的解释器来执行echo
命令用于向窗口输出内容myname="ken"
使用一个定义过的变量,只要在变量名之前添加美元符号即可
myname="ken"
echo $myname
echo ${myname}
在变量名外加花括号是为了帮助解释器识别变量名的边界,加不加都可以。
注意:当你给变量重新赋值的时候,不需要使用$
myname="ken"
echo $myname
myname="Tim"
echo $myname
使用readonly
命令可以将变量定义为只读变量,只读变量的值不能够被修改
myname="ken"
readonly myname
unset myname
变量被删除后不能再次使用,unset命令不能删除只读变量
字符串可以用单引号,也可以用双引号,也可以不用引号
一般推荐使用双引号,因为:
str="abcd"
each ${#str}
str="Hello linux.My name is ken!"
echo ${str:0:2}
0表示从0号开始,2表示两个字符
bash 支持一维数组,不支持多维数组,并且没有限定数组的大小,下表从0开始
array_name=(value0 value1 value2……)
注意: 这里是以 空格分隔,不是逗号!!!!
还可以单独定义数组的各个分量
array[0]="ken"
array[1]="Tom"
使用$
echo ${array[0]}
使用@
echo ${array[@]}
len=${#array[@]}
#
是干什么用的?
获得参数的个数
if [condition]
then
command
fi
示例
a="hello"
b="hello"
if [ $a = $b ]
then
echo "a==b"
fi
**注意:**如果不加[]
也是可以的,但是如果加的化,中括号前后都要有空格,if
后的分号可选,不影响;等号只能判断字符串是否相等且需要前后都有空格,否则是赋值语句永真,以后我们还会总结所有的符号。
示例:将上述写成一行在命令行中运行
a="hello"
b="hello"
if [ $a = $b ];then echo "a==b";fi
if condition
then
command
else
command
fi
示例
a="hello"
b="world"
if [ $a = $b ]
then
echo "a==b"
else
echo "a!=b"
示例:将上述示例写成一行在命令行中执行
a="hello"
b="world"
if [ $a = $b ];then echo "a==b";else echo "a!=b";fi
注意注意:变量的使用一定要有$
,变量的赋值不需要有!!
if condition1
then
command1
elif condition2
then
command2
else
command3
fi
示例
a=1
b=2
if [ $a -gt $b ]
then
echo "a>b"
elif [ $a -eq $b ]
then
echo "a==b"
else
echo "a
echo "输入1到4的数字:"
echo "你输入的数字为:"
read aNum
case $aNum in
1) echo "你选择了1"
;;
2) echo "你选择了2"
;;
3) echo "你选择了3"
;;
4) echo "你选择了4"
;;
esac
for var in item1 item2...
do
command
done
示例
for count in "a" "b" "c"
do
echo $count
done
**疑问:**能否遍历数组?
for i in ${array[@]}
do
echo $i
done
复习:${array[@]}
能返回数组中的所有元素
**疑问:**能否将一个字符串中的每一个字符取出?
str="This is a test."
for((i=0;i<${#str};i++))
do
echo -e "${str:i:1}\n"
done
注意:for
循环中的i
没有使用$
示例:以上的例子写成一行命令行代码
for i in ${array[@]};do echo $i ;done;
while condition
do
command
done
示例
count=1
while(($count<5))
do
echo $count
let "$count++"
done
until condition
do
command
done
condition
为false
继续执行循环体内的语句,直到condition不满足就停止
a=0
until ((a>=5))
do
echo "$a"
let "a++"
done
break跳出循环
continue回到循环头
[ function ] funname [ () ]
{
action
[return int;]
}
示例
function myecho(){
echo "hello world"
}
echo "---函数开始---"
myecho
echo "---函数结束---"
我们终于写到世界著名的hello world程序了!!!
function calculate(){
read a
read b
c=$((a+b))
return $c
}
calculate
d=$?
echo "两数相加的结果是$d"
有的人可能想要问,我想像c++或者java或者python程序一样有参数输入呢?别着急,往下看
经过上面的例子我们已经知道了函数调用就是直接写出函数名就可以了,如果有参数就往后顺延着写
function parm(){
echo "第一个参数是:${1}"
echo "第一个参数是:${2}"
echo "第一个参数是:${3}"
}
parm 1 2 3
函数参数上面已经用过了,我们再使用一个函数实验一下吧!
function add(){
return $((${1}+${2}))
}
read a
read b
add a b
c=$?
echo "$a和$b的相加结果是$c"
好了,我们应用输入两个数,然后把这两个数给了函数,函数计算出结果,我们取出返回值,打印。是不是和其他语言有点像了?
一个语言基本的东西都已经说了,也即数据类型、数组、条件语句、循环语句、函数。接下来我想写点shell和其他语言不同的或者说应该注意的东西!