Shell 变量相关操作

Shell 变量相关操作

一、变量的操作

1.创建和设置变量

两个内置命令declare和typeset创建变量。declare的-r选项可以创建只读变量,不能被撤销。

直接赋值给一个变量名也可以创建一个变量。

chen@chen-IdeaPad-Y430:~$ city=hangzhou

chen@chen-IdeaPad-Y430:~$ echo $city

hangzhou

当变量中包含空格时,则整个字符串都要用双引号括起来。

chen@chen-IdeaPad-Y430:~$ usage="usage: [-d : According to /home file] "

chen@chen-IdeaPad-Y430:~$ echo $usage

usage: [-d : According to /home file]

2.区分变量名

使用大括号来区别变量与其他字符

chen@chen-IdeaPad-Y430:~$ order=10

chen@chen-IdeaPad-Y430:~$ echo "This is ${order}th"

This is 10th

3.删除变量

使用shell内部的unset命令删除未被设置成只读属性的变量

二、变量的赋值

有直接赋值、通过read命令赋值、使用命令行参数赋值和利用命令的输出结果赋值等方法。

1.直接给变量赋值

定义变量的同时可以直接赋值,变量名前不应加符号$,且等号前后不可有空格。

2.使用read命令赋值

命令read是内置命令,可以从标准输入设备或从一个文件读数据。

Shell脚本在执行到read命令时,将暂停脚本的执行并等待键盘的输入。

该命令在给变量赋值时按如下规则

  1. 多个数据或变量之间用空格分隔
  2. 若变量个数与数据个数相等,则对应赋值
  3. 若变量个数大于输入数据个数,则没有输入数据的变量取空值
  4. 若变量个数小于输入数据个数,则多余的数据赋值给最后一个变量

chen@chen-IdeaPad-Y430:~/test$ cat logintest 

#!/bin/bash

#filename:logintest

echo "Please enter your user and password: "

read user password

echo "your user: $user "

echo "your password: $password "

echo "login in success! "

执行示例结果

chen@chen-IdeaPad-Y430:~/test$ chmod u+x logintest 

chen@chen-IdeaPad-Y430:~/test$ ./logintest 

Please enter your user and password: 

Tom 123456 7

your user: Tom 

your password: 123456 7 

login in success! 

如果没有指定一个变量来保存read的输入内容,bash会把用户的输入放在一个名为REPLY的变量中。

chen@chen-IdeaPad-Y430:~/test$ cat read2

#!/bin/bash

#filename:read2

read -p "请输入用户名: "     #-p用于显示提示信息,且用户的输入与提示信息出现在一行

echo "您输入的是: $REPLY "

chen@chen-IdeaPad-Y430:~/test$ chmod u+x read2

chen@chen-IdeaPad-Y430:~/test$ ./read2

请输入用户名: Tom

您输入的是: Tom 

3.命令行参数赋值

通过使用命令行参数对位置变量赋值。当命令行上的参数多余9个时,可以使用shift命令移动位置参数。

chen@chen-IdeaPad-Y430:~/test$ cat cmdarg 

#!/bin/bash

#filename:cmdarg

echo "----start----"

 while [ $# -gt 0 ]


 do

  echo "position: $* "

shift

 done

echo "---end---"

执行示例结果

chen@chen-IdeaPad-Y430:~/test$ chmod u+x cmdarg 

chen@chen-IdeaPad-Y430:~/test$ ./cmdarg 1 2 3 4 5 6 7 8 9 0 11

----start----

position: 1 2 3 4 5 6 7 8 9 0 11 

position: 2 3 4 5 6 7 8 9 0 11 

position: 3 4 5 6 7 8 9 0 11 

position: 4 5 6 7 8 9 0 11 

position: 5 6 7 8 9 0 11 

position: 6 7 8 9 0 11 

position: 7 8 9 0 11 

position: 8 9 0 11 

position: 9 0 11 

position: 0 11 

position: 11 

---end---

4.命令的输出结果赋值

使用反引号(“ ` ”)将一个可执行命令的执行结果赋值给一个变量。

root@chen-IdeaPad-Y430:/home/chen/test# cat cmdreasult 

#!/bin/bash

#filename:cmdresult

CURRDIR=`pwd`

RESULT=`find /etc -name fuse.conf`

echo "----------------------------"

echo "Current Directory: $CURRDIR "

echo "Search Result: $RESULT "

echo "----------------------------"

执行示例结果

root@chen-IdeaPad-Y430:/home/chen/test# chmod u+x cmdreasult 

root@chen-IdeaPad-Y430:/home/chen/test# ./cmdreasult 

----------------------------

Current Directory: /home/chen/test 

Search Result: /etc/fuse.conf 

----------------------------

5.文件读入数据实现赋值

从文件execfile中读取文件名,通过chmod命令为每一个文件赋予可执行权限

root@chen-IdeaPad-Y430:/home/chen/test# cat readfile 

#!/bin/bash

#filename:readfile

ls *.c >execfile

while read LINE

do

 chmod u+x $LINE

done<execfile

三、变量的输出

echo命令和printf命令

1.printf命令:格式化输出变量

printf 的格式说明符

\" 输出双引号

\oNNN 按八进制输出

\\ 输出反斜

\a 响铃
\b 退格
\c 不再做后面的输出
\f 填表
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符

\xNNN 按十六进制输出

%% 输出%

2.echo命令:直接输出变量






































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值