shell入门

输出环境变量

echo $PATH

shell脚本执行需要给与权限

chmod +x
chmod u+x
chmod a+x
使用bash + 脚本,则不需要执行权限

变量赋值“=”两边不可有空格

将命令值赋予变量 A=date
B=$(lS -l)
B=${lS -l}

列出所有变量 set

set | grep 变量名

单引号、双引号区别

单引号内容原封不动输出
双引号取消了空格的作用,特殊符号含义保留

删除变量

unset变量名

特殊变量

位置变量:$N来表示,$0表示文件名,$n表示第n个参数值
特殊变量:$* 程序所有参数
$# 参数个数
$$ 当前程序的PID
$! 执行上一个后台指令的PID
$? 执行上一个指令的返回值

read命令:从键盘读取数据赋予变量

expr命令: 整数型算数运算

语法expr 表达式 #运算符之间必须空格
···
expr 3 + 5
a=10
b=20
expr $a / $b #/是整除
expr $a * $b #*是特殊字符,需要转义
expr $a / $b / expr $a * $b
···

变量测试语句

test 测试条件 或使用[测试条件]来省略test
测试条件:变量、字符串、整数、文件

流程控制

if语法:
···
if 条件
then
语句
fi
···
扩展:使用;可以把命令写在一行,互不影响与$$不同
···
if [ -x /bin/ls ] ; then
/bin/ls
fi
if/else语法:
(if 条件1 ; then
命令1
else
命令2
fi
···
扩展:if/elif/elif/else/fi
-a && 逻辑与
-0 || 逻辑或

shell基本语法

case流控制语句-适用多分支
···
case 变量 in
字符串1)命令列表1
;;
字符串n)命令列表n
;;
*)命令列表
;;
esac
···

循环语句for...done

···
for 变量 in 名字表
do命令列表
done
···

循环语句while

···
while 条件
do
命令
done
···

使用(())扩展shell算数运算的使用方法

使用[]必须空格,使用expr
(())用法
((表达式1,表达式2...))
此时:不用空格、不用前缀$、支持,分开

循环语句嵌套

echo -n 输出不换行
read -p "输出内容" 变量名 #此时也不换行
echo * 表示匹配当前目录所有文件名,应该echo "*"

双重循环

echo
cat <<EOF

跳出循环

break:跳出整个循环
continue:跳出本次循环,进行下次循环

shift参数左移指令

每执行一次,参数序列顺次左移一个位置,$#的值减1,
用于分别处理每个参数,移出去的参数不再可用

shell函数-把一个功能封装起来,使用时直接调用函数名

···
函数名()
{
命令序列
}

function 函数名() #function可以不写
{
命令序列
}
···
注:函数调用时,不带()

原文地址:https://www.cnblogs.com/kylingx/p/11642007.html