shell script学习helloWorld及echo

编写运行第一个shell脚本

CentOS 預設使用者家目錄下的 ~/bin 目錄會被設定到 ${PATH} 內,因此放在家目录的bin(自己新建)执行起来会比较方便,

在该目录下新建hello.sh 输入以下内容并保存

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

echo -e "Hello World! \a \n"

exit 0

随后输入shell hello.sh   或者sh hello.sh  又或者输入路径加文件名(此时hello.sh必须有rx权限) 即可看到输出的hello world 

第一行声明所使用shell目录(shebang),第二三行设定环境变量  第四行输出helloworld 最后一行结束返回0,可以在执行上述脚本后输入 $? 查看返回值。

若脚本作为shell的参数执行(前两种),则第一行的声明就没用了。

 

看看echo 

echo hello

echo "hello"

echo 'hello'

均可以打印出hello,但是有一些细微的区别,第一种不能打分号输出,因为分号会被认为是命令的分隔符。第二种不能直接输出叹号,需要 \ 转义,单引号时,若加在变量两边,变量不会被输出其值,只会当成字符输出。

 

printf命令也可以输出字符,printf  "%-5s %-10s %-4.2f\n" 3 Jeff 77.564

输出结果:3     Jeff       77.56   -代表左对齐,不打这个就是右对齐,5为字符所占空间,4.2.2为小数点后显示2位,与cprintf函数有些类似。

 

echo参数的使用  echo -n 可以去掉输出后自带的换行,echo -e 可以使后跟双引号的内容里的转义字符(\t)生效。

利用echo修改字符界面字体颜色:echo -e “\e[1;COLORm”   COLOR填需要改的颜色值,部分如下:

字体颜色:reset=0, black=30, red=31, green=32, yellow=33, blue=34, magenta=35, cyan=36, and white=37.

背景颜色:reset = 0, black = 40, red = 41, green = 42, yellow = 43, blue = 44, magenta = 45, cyan = 46, and white=47

 

关于变量

环境变量

env显示所有终端相关环境变量,/proc/PID/environ  查看指定进程的相关环境变量

pgrep+进程名 可得其PID号,如pgrep bash

将环境变量换行输出:cat /proc/2213/environ | tr '\0' '\n'

 

修改环境变量

export PATH="$PATH:/home/user/bin"

关于export:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。

 

变量赋值,例子如下

#!/bin/bash

fruit=apple

count=5

echo "We have $count ${fruit}(s)"

 

The output is as follows:

We have 5 apple(s)

 

注意=两边不能有空格,带大括号和不带的两种引用方法均可以

 

获得字符串长度:${#var}  此处大括号不能省

echo $SHELL 显示当前SHELL位置

 

 

基本数学运算

直接赋值的变量都是被当成字符串存储的,但是可以另加一些命令将其作为数字来运算,主要有let和[ ]、(())等,实例如下

#!/bin/bash

no1=1

no2=2

let result=no1+no2

printf "result:%s\n" $result

let no1++

let no2--

let no1-=1

let no2+=1

#equals to result=$[no1+no2]

result=$((no1+no2))

printf "result:%s\n" $result

 

result=$[ $no1 + 5 ]

result=$(( no1 + 5 ))

注意二者的区别,一个no1前有$,一个没有。另外还有expr 略过

 

以上只能用于整型,浮点数操作下面讲

 输出为30.0

注意这里不是单引号,叫倒引号,作用是将里面内容当成指令执行而不是字符串

 

制定输出的精度:

echo "scale=2;3/8" | bc

输出:0.37

P18 待续

猜你喜欢

转载自blog.csdn.net/sinat_30457013/article/details/89531394