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