c语言将pwd结果赋给变量,第二天 引用 命令执行顺序 变量

目录

引用

命令执行顺序

变量

特殊变量

引用

为防止shell解释一些东西,所以就有了引用,四种符号  " ' ` \

双引、单引和反引号

使用反斜线实现屏蔽,转义。反斜线引用单个字符时,称它为转义字符

双引号除$ ` \ 三种符号外,引用所有内容,称为弱引用

[root@localhost script]# echo "$TERM pwd "

xterm pwd

[root@localhost script]# echo "`ls` pwd "

passwd

user pwd

[root@localhost script]# echo "\`ls\` pwd "

`ls` pwd

单引号引用所有内容,没有字符拥有特殊含义,称为强引用

反引号

shell试图替代单词hello为系统命令并执行它,因为hello脚本或命令不存在,返回错误信息。

[root@localhost script]# echo `hello`

-bash: hello: command not found

[root@localhost script]# echo `date`

Mon Dec 30 18:08:21 CST 2013

如果使用引用得到的结果不理想,再试另一种,毕竟只有三种引用方式,可以充分尝

试。

反斜线\

引用单个字符时,称它为转义字符,

最强引用,可以转义单引号

引用

单引号''

引用一串字符

强引用,单引号强,只有一个

引用

双引号""

保留$ ` \ 三种符号的特殊含义

弱引用,双引号

弱,有两个

引用

当使用字符时,应总是使用双引号,无论它是单个字符串或是多个单词

反引号``

命令替换

命令替换

命令执行顺序

&&,||,(),{} 四个符号的运用

shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功。而&&和||就是用来判断前一个命令执行效果的。

1  &&  与

使用方法:命令1 &&  命令2

这个方式简单明了,命令1如果返回结果为真(即执行返回为0,成功执行)后,命令2才被执行

换句话说,如果命令1执行成功&&那么执行命令2

这里有个命令

[ -f /home/dellogs.sh ] && echo "清除日至脚本存在"

总之,&&符号代表如果第一个命令执行成功才执行第二个命令。

2  ||  或

使用方法:命令1 || 命令2

||命令,如果命令1没有执行成功则执行命令2

如简单例子

cp wopper.txt oop.txt || echo "cp命令执行没有成功"

如果||左边的命令没有执行成功,则屏幕中除显示“cp命令执行没有成功”

下面给出一个更为实用的例子,

awk ‘{print$1,$5}’ acc.qrt >qtr.tmp || echo "sorry the payroll(薪水) extraction(抽取) did'not work" | mail root

3 除了使用&&和||这两方法外,还可以用(),{}这两个符号把命令连接起来

()和{}存在的目的只是为了,能一个shell或子shell中执行一组命令

使用方法(命令1;命令2;命令3;...)和{命令1;命令2;命令3;...}

这种情况比较少遇到,一般要和&&,||两个命令一起使用。

例如

comet monthent || (echo “Hello,quess what! comet did not work”| mail root;exit)

变量

变量的赋值有五种:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取。

1 先说一下从read命令吧:(主要是在需要交互时使用)

Read命令是系统内置命令,语法格式为:

read  变量1   变量2

当Shell脚本执行到read命令时,将暂停脚本的执行并等待键盘的输入,当用户输入完毕并且敲下回车之后,将完成赋值操作,脚本继续执行。

Read指令的规则:

多个数据或变量之间用空格隔开

若变量个数与数据个数相等时,对应取值

若变量个数大于数据个数时,没有输入数据的变量取空值

若变量个数小于数据个数时,将多余的数据赋给最后一个变量(也就是把空格当成字符串处理)

例子:

#!/bin/bash

echo -n “ please enter your name”  //-n 表示用户输入和提示信息在同一行

read name

echo “your name is $name”

#!/bin/bash

echo “Please  enter  your  first name  and last name :”

read first last

echo “your first name is $first”

echo “your last name is $last”

2 第二种赋值方法就是直接给变量赋值(这种赋值方法主要是在不需要交互时,并且参数不需要修改时使用)

例如:name=xiaosu

gender=man

3 第三种赋值方法是使用命令行参数赋值。(这种赋值方法是参数需要经常变化,并且不需要交互时使用)

这种赋值方法,也就是直接在命令后面跟参数,然后系统用$1来引用第一个参数。

4 第四种方法是利用命令的输出结果赋值(这种赋值方法可以直接处理上个命令产生的数据)

在Shell程序中,可以将一个命令的输出结果来当做变量,不过需要在赋值语句中使用反引号

例如currentdir=`pwd`

echo $currentdir

5 最后一种赋值方法是从文件中读入数据

这种方式就适合处理大批量的数据,直接把相应的数据写入文件,然后运行脚本即可。

通常是通过while循环一行行读入数据,即没循环一次,就从文件中读取一行数据,直到读取到文件的结尾。

例如:

#!/bin/bash

ls *.sh >execfile

while read LINE

do

chmod a+x $LINE

done

这个脚本使用了while..do..done 结构,最后一行表示从文件execfile读取数据。while read LINE表示 每次循环读入一行数据并赋值给变量LINE。

6 变量的输出

最简单的方法就是使用echo

如果想输出格式化的字符串,就需要使用printf,用法和C语言类似

printf 命令的格式说明符

\”    输出双引号

\\    输出反斜杠

\a    响铃

\n    换行

\r    回车

特殊变量

# vi variable

#!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first:$1"

echo "second:$2"

echo "argume:$@"

echo "show parm list:$*"

echo "show process id:$$"

echo "show precomm stat:$?"

# chmod +x variable

# ./variable aa bb

number:2

scname:./variable

first:aa

second:bb

argume:aa bb

show parm list:aa bb

show process id:24544

show precomm stat:0

通过显示结果可以看到:

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表

$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

该变量包含了所有输入的命令行参数值。如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm

此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.

$$ 是脚本运行的当前进程ID号

$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值