1.eval的含义

eval实际上是对后面的算式或者表达式执行两次解释。

例如

a=sc

bsc=feiye

echo $a

eval echo "$"b$a

最后一句实际上是执行了2次。

第一次是得到 echo $bsc,再执行一次就得到了feiye

2.怎样把命令输出赋值给变量

1.将$()将命令括起来。

a=$(whoami)

echo $a

2.将``将命令括起来。[注意:`是~号对应的键]

a=`whoami`

echo $a

3.怎样得到文件中的某行

1.如何是第一行或者最后一行,可以用 head -n 1或者tail -n 1得到

2.如果是想要得到文件中的某个满足条件的行,可以用while read line结构的程序。

file=/home/test/input.dat

cat $file | while read line

do

if [ echo $line|grep test -q ]

do

echo "get it"

fi

done

4.怎样读取文件中的字符值并赋值给变量

1.用while read line读取文件中的每行,用 函数读取变量

line=“test string”

readstr()

{

read var1 var2

echo $var1

echo $var2

}

echo $line|readstr

2.用awk实现

line=test string

var1=`echo $line|awk '{print $1}'`

var2=`echo $line|awk '{print $2}'`

5.如何去掉回车与换行

使用 tr -d '/n/r'

6.shell中如何判断字符串匹配

1.利用grep

如:

echo $str1|grep "*g09?" -q

echo $?

判断str1字符中是否匹配后面的模式,如果匹配则$?的值为0,否则为非0

2.利用 =~

如:

if [[ " sc test cs" =~ " test " ]]

then

echo "true"

else

echo "false"

fi

7.shell中如何判断数字相等

1.用(( ))将需要比较的数字括起来。

(($num1 == $num2)) (($num1 != $num2)) (($num1 >= $num2))

(($num1 <= $num2)) (($num1 > $num2)) (($num1 < $num2))

2.用比较符号 -eq -gt -ge -lt -le -ne来比较

[ $num1 -eq $num2 ] (=) [ $num1 -gt $num2 ] (>) [$num1 -ge $num2 ](>=)

[ $num1 -lt $num2 ] (<) [ $num1 -le $num2 ] (<=) [ $num1 -ne $num2 ] (!=)

8.如何在shell函数中返回值以及如何取shell函数的返回值

在函数中返回值的方法有多种。

1.利用全局变量,在子函数中改变全局变量,结果将会保存到函数结束。

2.在函数中通过result语句来返回值,但是只能返回一个0-127范围的数值,用 &? 来获取函数执行后的结果。

3.通过echo 方法

通过 &?来取得一个函数的返回值,如果函数中没有返回值,则该值为函数中最后一个命令的执行结果。

shell命令的执行结果,值为0表示为真,值非0表示为假。

9.如何将子shell的变量传递给父shell,或者将父shell变量传递到子shell

父shell变量传递到子shell只需要用export 就可以了,子shell对变量的改变将不会影响父shell。

子shell变量传递到父shell,还没有找到完美的,我知道暂时只能通过临时文件来传递。

10.文件或目录的s权限与t权限

一般文件只有3中权限 w,r,x,分别表示可写,可读,可执行.

某些特殊文件还有s权限或者t权限。

例如

ll /usr/bin/passwd

-rwsr-xr-x 1 root shadow 79336 2007-05-04 19:28 /usr/bin/passwd

ll /
drwxrwxrwt  34 root root 2488 2010-01-30 21:20 tmp

我们看到passwd的User位置有个s权限,它表示运行它的用户将会以该文件的属主身份来执行。

所以普通用户可以运行passwd来修改自己的命令(虽然/etc/passwd是root用户的)

同样的在Group位置也可以设置s权限,它同suid类似,运行它的用户将会以该文件的组身份来执行。

t权限只对目录有效果,它的作用就是所有用户都可以自由建立文件和文件夹,但是只能删除自己建立的文件或者文件夹,

这对于/tmp的意义是非常重要的。

对文件加suid(4)权限 chmod 4755 file

对文件加sgid(2)权限 chmod 2755 file

对文件加t权限(1)权限 chmod 1777 file

对目录加suid,sgid,t权限 chmod 7777 directory

需要注意的是

1.suid,guid只能对应于二进制文件,对shell无效

2.guid和uid,除了上面所说的作用外,guid还一般用来使某个目录内创建的文件都具有某个组权限。

3.s权限的前提是x权限,如果文件没有x权限而被赋予s权限,将会显示大写的S.

Bash Shell学习笔记三相关推荐

  1. Bash Shell学习笔记四

    1. 几个常用命令和基本知识. set $(commond)          将位置参数设置为后面的命令输出 shell命令中 在-- 后面的语句将会不再解释后面的 - cal 万年历 bc 计算器 ...

  2. bash linux .ee,Linux下Bash shell学习笔记.md

    ### 1.shell下没有变量类型和定义的概念. >1. 变量直接使用不用定义 >2. 所有值都视为字符串. >3. 在对变量取值都需要加$ >4. 行注释为 # + ### ...

  3. Bash Shell学习笔记二

    1.||.&& 和&.|的区别 ||和&&的执行是从左到右,而&和|的执行是两边到中间的(未实际测试,只能确认它不是按顺序执行的) ||和&&a ...

  4. Bash shell学习笔记(五)

    课程目标 掌握常用的正则表达式元字符含义 掌握sed的删除行操作 掌握sed的打印行操作 掌握sed的增加行操作 掌握sed的修改替换操作 正则表达式 正则表达式介绍 正则表达式(Regular Ex ...

  5. Bash Shell学习笔记五

    1.vim的模式下复制与粘贴 视图模式下: shift+d剪切 shift+p粘贴 shift+y复制 按下D可以整行删除 按delele键,可以逐一字符删除. 2.vim中的几个用法 1.搜索上一个 ...

  6. shell学习笔记三

    cat用法 1. 读取文件内容:cat file 2. 将输入文件的内容和标准输入拼接在一起,方法如下: echo 'Text through stdin' | cat - temp.txt 在上面的 ...

  7. Bash Shell学习笔记一

    1. 在Linux中执行脚本文件时 以 ./执行的 或者普通方式(输入文件名)执行时是启动子shell执行的,所以,一切环境变量设置在推出后失效 因此在脚本中设置$PATH将失效,如果一定要以脚本方式 ...

  8. Bash shell 学习笔记六

    vim中统计单词的个数 统计hello单词的个数 :%s/hello/&/g 或 :%s+hello+&+g sed 的一个用法 echo 135.0.1.4|sed 's//./*( ...

  9. Shell学习笔记(三)——获取文件夹里所有文件的文件名

    示例 Windows平台上获取某文件下所有图片的名字,不要文件名后缀,将文件名存入文本文件中. D:. 1403636579763555584.raw 1403636579813555456.raw ...

最新文章

  1. 进击的 Kubernetes 调度系统(二):支持批任务的 Coscheduling/Gang scheduling
  2. Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
  3. MySQL事务处理与事务隔离(锁机制)
  4. MySQL基础之DML语句
  5. 教大家多个域名绑定一个空间的解决办法,原创,自己已经测试过了,完全可以绕过杀毒软件,以及空间商.
  6. git本地仓库基本使用(Repository)
  7. 新东方 计算机英语,常用计算机英语词汇:DRAM
  8. matlab如何让图更清晰,matlab图片清晰度调整
  9. SEO需要每天写文章吗?
  10. android 后台监听按键,Android监听home键的方法详解
  11. 基于内容的图像检索 概述
  12. AB测试(Test)——原理与实际案例手把手教学
  13. windows10 系统家庭版转专业版小结
  14. Oracle 查询临时表空间
  15. 【UNR #1】合唱队形
  16. 1009-确认订单-订单流程梳理与订单状态
  17. 小米门卡协议加载失败_小米手机门禁卡空白卡开通步骤及写入激活方法
  18. 2016第16本:随机漫步的傻瓜
  19. 【收藏】C#面试题整理笔试篇(最全1000+道带答案)300道填空 + 300道选择 + 300道判断 + 70道读程序写结果和看程序填空 + 100道简答题
  20. office2016安装记录

热门文章

  1. Golang实现web api接口调用及web数据抓取[get post模式]
  2. 公司项目拓扑的演变过程
  3. Java Date Time 教程
  4. eclipse导出Maven依赖的Jar
  5. HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
  6. 快速排序算法的简短描述
  7. [原创].如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  8. oracle备份集注册,OracleRMAN将备份集重新注册到控制文件说明
  9. 三星Note2 行货 水货 型号版本
  10. EJB之JPA(UUID与TABLE影射策略)