shell学习笔记1

脚本:一个Shell脚本主要由原本需要在命令行输入的命令组成(用户可以使用脚本来把一些常用的操作组合成一组序列)。

脚本语言:主要用来书写脚本的语言。

 

linux中shell变量$#,$@,$0,$1,$2的含义解释:
$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最后运行的后台Process的PID 
$? 
最后运行的命令的结束代码(返回值) 
$- 
使用Set命令设定的Flag一览 
$* 
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 
命令行上参数个数,但不包括shell脚本名本身
$0 
Shell本身的文件名 
$1~$n 
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 

标准文件名                       文件描述字
•  标准输入文件(stdin)        0 
•  标准输出文件(stdout)      1
•  标准出错输出文件(stderr) 2

重定向:

结果重定向(>)和结果附加重定向(>>)有什么区别?

> 会清除重定向的文件的内容 >>则不会只会附加

?即时文件定向符
命令 [参数]<<  标记符
输入行

标记符
注意:标记符要成对出现
例如:
mail $1 <<  !!
Best wishes to you on your birthday .
!!

用户定义的Shell变量
$ names="Zhangsan Lisi Wangwu"
$ echo $names


read命令
从键盘上读取数据
read 变量1 [ 变量2 …]

echo命令 显示其后的变量值或者直接显示它后面的字符串

echo -n 字符串 其中选项n表示输出文字后不换行;

stty -echo 设置命令不被显示    stty echo 取消不显设置

位置变量

?通过命令行上对应的实参传值

?用set命令对位置参数赋值

使用环境变量
如果要使用环境变量或其它shell变量的值,必须在变量名之前加上一个“$”符号,不能直接使用变量名。
如:cd $HOME

利用export命令将这些变量输出,使它们成为公用量。如:
export HOME HZ LOGNAME TERM

条件测试
a) test 命令
b) 用一对方括号将测试条件括起来
例如,测试位置参数$1是否是已存在的普通
文件,可写为:
test -f "$1"
或:[ -f "$1" ]

if test - f "$1"
then pr $1
elif test - d "$1"
then ( cd $1 ; pr * )
else echo "$1 is neither a file nor a
directory ."
fi

case语句允许进行多重条件选择:
case 字符串 in
模式字符串1 ) 命令

命令;;
模式字符串2
命令;;
模式字符串2 ) 命令

命令 ;;

模式字符串n ) 命令

命令;;
esac

'basename $0'放在双引号内可打印脚本文件名

单词:

parameter是指函数定义中参数,而argument指的是函数调用时的实际参数。

subdirectory 子目录

Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell

其他:

$history 50 显示最后50行历史命令

tab键 自动补全命令

Ctrl + l       清屏,相当于执行clear命令

原文地址:https://www.cnblogs.com/coding-gaga/p/5944084.html