您的位置:首页 > 运维架构 > Shell

2018年第一次笔记 LINUX的shell入门

2018-01-24 21:52 253 查看

Shell:内部核心与外部使用者联系的介质!

Shell:解释型语言

Shell Script <==> DOS 批处理

#!/bin/sh 开头路径


#!/bin/sh
date
pwd


Shell 一般要先给可执行权限,或使用内部命令
source
sh
执行

Shell 变量

常用的系统变量及其含义

$#: 保存程序命令数
$0: 当前程序名
$*: 以("$1 $2…")形式保存所有输入的命令行参数
$@: 以("$1" "$2"…)形式保存所有输入的命令行参数
$n:$n为命令行的第n个参数


例子:

echo "the No. of parameter is $#";
echo "the script name is $0";
echo "the parameters in the script are $*";
echo "the parameters in the script are $3";


注意:

1. 参数中间一定要有空格

2. Shell参数和C语言参数的一个区别是shell不把文件名作为参数,而c语言参数把文件名当作第一个参数

Shell的环境变量

Shell环境变量时所有Shell程序都会接受的参数。Shell程序运行时,都会接收一组变量,这组变量就是环境变量,常用的Shell变量有:

PATH:Shell寻找程序或命令的目录
HOME:当前用户主目录的完全路径
HISTSIZE:历史记录数
LOGNAME:当前用户的登陆名
HOSTNAME:主机名称
Shell:Shell路径名
LANGUGE:语言相关的环境变量,多语言可以修改此环境变量
MAIL:当前用户的邮件存放目录
PWD:当前工作目录的绝对路径

显示变量  #echo $HOME
设置变量  #expert WELCOME = "HE"  //只改变当前的环境变量
查看所有变量  #env
查看本地变量  #set
删除变量  #unset
查询变量  #env|grep WELCOME  //管道的使用  或者  #set|grep WELCOME


用户变量

几个特殊功能

变量扩张

${var}


字符串截断功能

分为左截断和右截断

* 任意n个字符 ? 任意一个字符


//左截断的例子
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}  //##最长匹配
rthought.jpg
$ echo ${MYVAR#*fo}  //#最短匹配
odforthought.jpg
//右截断的例子
$ MYVAR="chickensoup.tar.gz"
$ echo ${MYVAR%%.*}  //最长截断
chickensoup
$ echo ${MYVAR%.*}  //最短截断
chickensoup.tar


流程控制

if语句

if [-e ./test.sh]  //这里条件的写法其实更难!!!
then
echo "..........."
else
echo ",,,,,,,,,,,"
fi


case语句

#!/bin/sh
Test=test.tar.gz
case "${Test##*.}"in
gz)
tar -xzvf $Test ;;
bz2)
tar -xjvf $Test ;;
*)
echo "formar error" ;;
esac


循环语句

#!/bin/sh

Mynum=0

while [ $Mynum -ne 10 ]
do
echo $Mynum
Mynum=$(($Mynum + 1))
done


#!/bin/sh

for x in 1 2 3
do
echo $x
done

#!/bin/sh

for x in ./t*
do
echo $x
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: