shell 相关的基础知识
来源:互联网 发布:网游网络加速器哪个好 编辑:程序博客网 时间:2024/05/01 05:06
shell 相关的基础知识
变量
var=valuevar="value ${var}" var='$var'
- 定义变量时=两边不能有空格,
- 单引号表示是字符串,其中的变量不会进行解释,
- 双引号,字符串中的变量会用它的值进行替换
echo printf
- echo 打印输出字符串
- printf 格式化打印输出字符串,与c语言的printf()比较类似
{} 扩展
mv /usr/bin/file{,.bak}{1..50} # 可以扩展为1到50{a..z} # a b c .. z
将/usr/bin下的file文件生命名为file.bak,通过 { } 可以不用多敲一遍路径
字符串长度
${#var}
如果存在变量var则给出字符串长度,否则输出0
shell 类型
$0 or $SHELL
查看环境变量
env $UID 用户ID,root用户ID为0$PS1 命令行提示符$PATH 环境变量$HOME 家目录 $PWD 当前目录$USER 当前用户$? 上一个命令执行后的退出状态,0 ->成功执行
算术运算
let (()) []expr bc
#!/bin/bash# mathdemo.shno1=34no2=20let result=no1+no2echo $resultres=$[ no1 - no2 ]ans=$((no1+no2))ans2=$(expr 3 + 4)echo $resecho $ans echo $ans2echo '4*2.89' | bc
- 使用let时,变量不用加$ 符号
- bc可以进行浮点数运算
文件描述符及重定向
stdin 0stdout 1stderr 2< 定向到标准输入流> 定向到标准输出流2> 定向到标准错误流 >> 追加&> 将stdout 与 stderr 合并并进行重定向
自定义文件描述符
0,1,2是stdin,stdout和stderr的预留描述符。
文件打开模式:
- 只读模式 <
- 截断模式 >
- 追加模式 >>
# 创建一个文件描述符进行读取exec 3< read.file # 创建一个文件描述符进行截断写入exec 4> write.file# 创建一个文件描述符进行文件的追加exec 5>> append.file
数组与关联数组
#!/bin/bash# 数组索引从0开始array=(1 2 3 4 5)index=2echo ${array[0]}echo ${array[$index]}#打印出所有数组的值echo ${array[*]}echo ${array[@]}# 打印数组长度echo ${#array[@]}
关联数组:
declare -A ass_arrayass_array=([index1]=varlue1 [index2]=varlue2)# 列出数组索引echo ${!ass_array[*]}echo ${!ass_array[@]}
stty
# 设置读取密码时不输出到终端stty -echo read passwordstty echoecho input passworld success
shell 调试
bash -x script.sh -x #将脚本中执行过的每一行都输出到stdoutset -xset +x 禁止调试set -vset +v 禁止打印输入
通过选项-x可以启动调试shell脚本
函数
function fname(){statements;}orfname(){statements;} fname #执行函数fname arg1 arg2 #传递参数$1 第一个参数$2 第二个参数$@ 可以扩展为"$1" "$2" ...export -f fname #导出函数,函数扩展到子进程
子shell
cmd_output=$(command)cmd_output=`command`
可以通过子shell读取命令的输出
子shell生成单独进程
(command) #会在一个子进程中执行out="$(cat file)" #通过引号引用子shell可以保留空格与换行
read
#!/bin/bash # 不回显地读取数据 read -s var # 显示提示信息 read -p "prompt: " var # 在2秒内读取数据 read -t 2 var # e用定界符结束输入行 read -d ":" var
内部分隔符 IFS
IFS 默认为空白字符
0 0
- shell 相关的基础知识
- shell 脚本的基础知识
- shell 的基础知识
- 注册表的相关基础知识
- Java相关的基础知识
- UML的相关基础知识
- UML的相关基础知识
- PendingIntent的相关基础知识
- spark的相关基础知识
- web相关的基础知识
- IP相关的基础知识
- 单片机相关的基础知识
- Linux Shell Script的基础知识
- linux Shell脚本的基础知识
- shell脚本之前的基础知识
- shell脚本的一些基础知识
- 位运算相关的基础知识
- 显示屏驱动相关的基础知识
- 计算机网络(七)--用户数据报协议UDP和传输控制协议TCP概述
- COM技术内幕--调试接口与自动化
- h2数据库的简单使用
- 【LeetCode】 112. Path Sum
- 【开发工具】eclipse或idea插件安装使用
- shell 相关的基础知识
- 常量值
- 【Hadoop】HBase框架学习之路
- android软件盘管理
- redis 安装
- C#邮件提醒
- 技术人员如何创业《一》—— 产品及想法(转载)
- html5 创建表格
- 第三章 数据和C:转义序列