Shell
2020-12-17 14:33:44 40 举报
AI智能生成
Shell是一种命令行解释器,是操作系统与用户进行交互的重要工具。它为用户提供了一个向操作系统发送指令的平台,用户可以通过输入特定的命令来完成各种操作,如文件管理、系统设置、进程控制等。Shell不仅可以执行基本的命令,还可以通过编写脚本来自动化任务,提高工作效率。Shell的语法简洁明了,功能强大,是程序员和系统管理员的必备工具。
作者其他创作
大纲/内容
#!
#!/bin/sh
#!/bin/bash
注释
单行注释
#
多行注释
:<<EOF<br>注释内容<br>注释内容<br>EOF
变量
命名
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
区分大小写
中间不能有空格
不能使用标点符号
不能使用关键字
赋值
字符串
表达
string='my_str'<br>
string="my_str"<br>
string=my_str
使用
${#string}
${string:start_index:end_index}<br>
`expr index "$string" search_str`<br>
数组
表达
数组名=(值1 值2 ... 值n)
array_name=(value0 value1 value2 value3)
array_name=(<br>value0<br>value1<br>)
array_name[0]=value0<br>array_name[1]=value1<br>array_name[n]=valuen
使用
${my_array[index]}
${my_array[*]}<br>${my_array[@]}<br>
${#my_array[@]}<br>${#my_array[*]}<br>
只读
readonly temp
删除
unset temp
引用
$temp
${temp}
类型
用户自定义变量
环境变量
$HOME
$PATH
$PS1
$PS2
$IFS
$0
$#
$$
位置参数变量
$1、$2、...
$*
$@
预定义变量
位置参数变量
$?
$!
$-<br>
运算符
算术运算符
=
a=$b
+
`expr 20 + 10`
-
`expr 20 - 10`
*
`expr 20 * 10`
/
`expr 5 / 2`
%
`expr 5 % 2`
==
`expr 20 == 10`
!=
`expr 20 != 10`
位运算符
<<
5 << 2 = 20<br>-5 << 2 = -20<br>
>>
5 >> 2 = 1<br>-5 >> 2 = -2<br>
&
5 & 2 = 0<br>-5 & 2 = 2
|
5 | 2 = 7<br>-5 | 2 = -5
^
5 ^ 2 = 7<br>-5 ^ 2 = -7
~
~5 = -6<br>~-5 = 4
关系运算符
-eq
[ 20 -eq 10 ]
-ne
[ 20 -ne 10 ]
-gt
[ 20 -gt 10 ]
-ge
[ 20 -ge 10 ]
-lt
[ 20 -lt 10 ]
-le
[ 20 -le 10 ]
布尔运算符
!
[ ! false ]
-o
[ 10 -lt 20 -o 20 -gt 100 ]
-a
[ 10 -lt 20 -a 20 -gt 100 ]
逻辑运算符
&&
[[ 10 -lt 100 && 20 -gt 100 ]]
||
[[ 10 -lt 100 || 20 -gt 100 ]]
字符串运算符
=
[ "abc" = "def" ]
!=
[ "abc" != "def" ]
-z
[ -z "abc" ]
-n
[ -n "abc" ]
$
[ $string ]
文件测试运算符
-b
[ -b $file ]
-c
[ -c $file ]
-d
[ -d $file ]
-f
[ -f $file ]
-k
[ -k $file ]
-p
[ -p $file ]
-u
[ -u $file ]
-g
[ -g $file ]
-r
[ -r $file ]
-w
[ -w $file ]
-x
[ -x $file ]
-s
[ -s $file ]
-e
[ -e $file ]
-S
[ -S $file ]
-L
[ -L $file ]
命令
输入
read [OPTIONS] [ARGUMENTS]
read -p "请输入一个数num1=" NUM1
read -t 10 -p "请在10秒内输入一个数num2=" NUM2
select
同流程控制中的select
输出
echo [OPTIONS] [ARGUMENTS]
echo "\"A\""
echo -e "A\nA"
echo -e "A\c"<br>echo "A"
printf [FORMAT-STRING] [ARGUMENTS]
printf "%-10s %-8s %-4s\n" A B C
printf '%d %s\n' 1 "abc"
printf %s abcdef
printf %s abc def
printf "%s and %d \n"
检查
test<br>
test $str1 = $str2
[ ]
[ "$str1" != "$str2" ]
模式匹配
[[ ]]
[[ hello == hell? ]]
数学运算
$[ ]
$[$a + $b]
$[a + b]
$(( ))
$(($a + $b))
$((a + b))
命令替换
$( )
a=$(expr 1 + 1)<br>
` `
a=`expr 1 + 1`
变量替换
${ }
${变量#关键词}
${变量##关键词}
${变量%关键词}
${变量%%关键词}
${变量/旧关键词/新关键词}
${变量//旧关键词/新关键词}
路径/文件名
basename [PATHNAME] [SUFFIX]
basename /usr/bin/sort
basename include/stdio.h
basename include/stdio.h .h
dirname [PATHNAME]
dirname /usr/bin/
dirname dir1/str dir2/str
dirname stdio.h
流程控制
if
if 条件<br>then<br>操作<br>fi
if 条件<br>then<br>操作1<br>else<br>操作2<br>fi
if 条件1<br>then<br>操作1<br>elif 条件2<br>then<br>操作2<br>else<br>操作3<br>fi
case
case 变量 in<br>模式1 [ | 模式12 ] ... )<br> 操作1<br> ;;<br> 模式2 [ | 模式22 ] ... )<br> 操作2<br> ;;<br> ...<br>esac
for
for 变量 in 列表变量<br>do<br> 操作<br>done
while
while 条件<br>do<br> 操作<br>done
until
until 条件<br>do<br> 操作<br>done
break
continue
select
select var in 列表变量<br>do<br> break;<br>done
echo "请选择一个选项:"<br>select var in "A" "B" "C" "D"; do<br> break;<br>done<br>echo "您的选项是:$var"
loop
函数
[ function ] 函数名 [()]<br>{<br> 操作;<br> [return 返回值;]<br>}
my_func(){<br> echo "hello"<br>}<br><br>my_func<br>
function my_func(){<br>echo "hello"<br>return 0;<br>}<br><br>my_func<br>echo $?
my_add()<br>{<br> result=0<br> for i in $*<br> do<br> result=`expr $result + $i`<br> done<br> return $result<br>}<br><br>my_add 1 2 3<br>echo $?<br>
文件包含
. filename
source filename
运行
./test.sh<br>
bash test.sh
sh test.sh
0 条评论
下一页