echo 表示 输出
仅用于字符串的输出,没有使用printf作为输出的移植性好,建议使用printf
参数传递
获取参数值:
$0 :
固定,代表执行的文件名
$1 :
代表传入的第1个参数
$n :
代表传入的第n个参数
$#:
参数个数
$*:
以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数
$@:
与$*相同,但是使用时加引号,并在引号中返回每个参数。
$$:
脚本运行的当前进程号
$!:
后台运行的最后一个进程的ID
$?:
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$* 与 $@ 区别:
- 相同点:都是引用所有参数。
- 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个
参数)。
文件运算符
格式:[ -f /etc/fstab ] [ 参数 文件路径 ] 0 表示 “真”,1 表示“假”
参数
描述
-b file
检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file
检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file
检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file
检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file
检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file
检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file
检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file
检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file
检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file
检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file
检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file
检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file
检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
逻辑运算符
假定变量 a 为 10,变量 b 为 20:
“&&“ ---->表示只有当 前面的命令执行成功 后面的命令才会执行
"||"------->表示只有当 前面的命令执行失败 后面的命令才会执行
”!“ 判断当前词组是否为 真 或 假,若为真,则判定假;若为假,则判定真;————就像是反义词
格式:[ ! $USER = root ] $$或者|| echo "user"
&&
逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
||
逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
数字关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下面假定变量 a 为 10,变量 b 为 20
-eq
检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne
检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt
检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt
检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge
检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le
检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
free
用来获取当前系统正在使用及可用的内存量信息
free -m
grep Mem
过滤出剩余的内存信息
free -m | grep Men: | awk ‘{print $4}’
字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
操作符
作用
=
检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!=
检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z
检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n
检测字符串长度是否为0,不为0返回 true。 [ -n “$a” ] 返回 true。
$
检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
shell脚本创建完成后需要进行立即执行该脚本:bash 脚本名
查询:ls -ld 文件路径名
if条件语句:
例如:判断该脚本输出值是否为成年或儿童
- #!/bin/bash
- read -p "Enter your score(0-100):" AGE ##青色底纹 表示 范围
- if [ $AGE -ge 18 ]; then ##黄色底纹 表示 变量
- echo "成年" ##绿色底纹 表示 参数
- elif [ $AGE -gt 12 ] && [ $AGE -lt 18 ] ; then
- echo "少年"
- else [ $AGE -lt 12 ]
- echo "儿童"
- fi
查询用户信息,
判断该用户是否存在
id 用户名
例如:id root
用case语句,输入1-4之间的数并输出所输入的数字:
cat wqd.sh
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
Shell
最新推荐文章于 2023-07-02 12:27:18 发布