为了账号安全,请及时绑定邮箱和手机立即绑定

求指教,关于在linux中将回车给变量,该怎么写?

求指教,关于在linux中将回车给变量,该怎么写?

PIPIONE 2022-03-18 15:11:10
脚本内容如下:Do you want to change them (Y/N)?(Y)在后面直接敲回车,即代表Y,怎么写?谢谢!
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

var=value 变量定义并赋值,注意等号前后不能与空格相邻,如果需要有空格(其他特> 殊字符,如$,回车,",',\等)可用转义字符\进行转义。
变量命名规则同C语言。
变量值两端可以用"或者',"号中的$保持变量特性不变,但'号中的特殊字符即为其字> 面值。
echo $var 获取变量的值。

neeo@neeo-labtop:~$ hi=hello #定义变量hi
neeo@neeo-labtop:~$ echo $hi #获取变量hi的值
hello
neeo@neeo-labtop:~$ hi=$hiworld #像这样不能实现将hi变量值变为helloworld的目的,因为$hiworld被认为是一个变量,而这个变量并不存在,hi变成了空值。
neeo@neeo-labtop:~$ echo $hi

neeo@neeo-labtop:~$ hi=hello
neeo@neeo-labtop:~$ hi=$hi,world #但是这样是可以工作的,原因是逗号不是合法变量名的一部分,只有$hi被识别为一个变量。
neeo@neeo-labtop:~$ echo $hi
hello,world
neeo@neeo-labtop:~$ hi=hello
neeo@neeo-labtop:~$ hi="$hi"world #可以这样扩充变量值,注意双引号中的$符号依然具有其特殊性。
neeo@neeo-labtop:~$ echo $hi
helloworld
neeo@neeo-labtop:~$ hi=${hi}world #也可以这样,注意{}的位置和双引号的位置是不同的。
neeo@neeo-labtop:~$ echo $hi
helloworldworld
neeo@neeo-labtop:~$ hi='$hi'world #如果你写成了这样(双引号被单引号替代),$符号失去了其特殊性,变成了一个字面值,结果就是下面这样。
neeo@neeo-labtop:~$ echo $hi
$hiworld

有关数组的定义 arr[index]=value

neeo@neeo-labtop:~$ arr[1]=one #这4行定义了一个数组
neeo@neeo-labtop:~$ arr[0]=zero
neeo@neeo-labtop:~$ arr[2]=two
neeo@neeo-labtop:~$ arr[10]=ten
neeo@neeo-labtop:~$ echo $arr # $arr的结果等同于 arr[0],
zero
neeo@neeo-labtop:~$ echo ${arr} #结果同上
zero
neeo@neeo-labtop:~$ echo "${arr},${arr[1]}" #看来像${arr[1]}这样可以取得arr[1]的值
zero,one
neeo@neeo-labtop:~$ echo $arr[3] #那么这样能取得arr[3]的值么?看结果,不解释
zero[3]
neeo@neeo-labtop:~$ echo ${arr[3]} #这样应该可以取到了吧!因为arr[3]没有值,当然为空。

neeo@neeo-labtop:~$ unset arr #(这里是剧透,unset下面才讲到)有意思的在这里,unset arr并不等同于unset arr[0],事实上,unset把整个arr都干掉了。注意区分上面的 echo $arr。
neeo@neeo-labtop:~$ echo ${arr[1]} #被unset扫荡过的arr,1号成员消失了。

neeo@neeo-labtop:~$
#不要走开哦,下面介绍declare时有数组定义的新方法。

neeo@neeo-labtop:~$ arr=(0 1 2) #还可以这样声明数组,注意值之间用空格分隔。
neeo@neeo-labtop:~$ echo ${arr}
0
neeo@neeo-labtop:~$ echo ${arr[2]}
2
neeo@neeo-labtop:~$

declare 和typeset
declare的执行方式:declare [-aAfFilrtux] [-p] [name[=value] ...]
其中:

-f #列出函数列表,包括函数体
-F #列出函数列表,尽显示名称
#------------分隔线,下面是设定变量属性用的----------
-a #变量为一个数组(就是类似C语言中的数组,用整数做下标)
-A #变量为一个关联数组(用一个字符串做下标,key-value,类似于C#中的字典,健唯一)
-i #变量为一个整数
-l #变量的值为小写(这是小写的L不适大写的i)
-u #变量的值为大写
-r #变量为一个只读变量(很彪悍,不能改不能删,见下面讲到的readony)
-x #声明为环境变量(类似于export,看下面)
-t #变量具有'trace'属性


查看完整回答
反对 回复 2022-03-22
?
动漫人物

TA贡献1815条经验 获得超10个赞

亲,很高兴为您解答
$ v=$'\n'

$ echo -n "$v"|od -tx1
0000000 0a
0000001

$ echo -n $v|od -tx1
0000000

$ v='\n'

$ echo -n "$v"|od -tx1
0000000 5c 6e
0000002


查看完整回答
反对 回复 2022-03-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信