echo 参数回至标准输出.显示文本行或变量,或者把字符串输入到文件
echo [-n] [arguments]
-n 禁止echo命令输出后换行
-e 使转义符生效
> 把一个串输出到文件中 如 echo "Great!" > file
>> 追加到一个文件的末尾 如 echo "$LOGINAME them out at ‘date’ " >> file
#‘date’ date是命令,但是我不知道是被什么符号包围着, $LOGINAME 是变量
是执行命令的符号,也就是Tab上面的那个键。
echo "what is your name:\c" #\c不换行
read name #从键盘输入字符串
echo $HOME #输出变量的值
echo $RANDOM bash里运行的随机数
echo 将参数送到输出设备上,显示完参数后,还会送一个换行符
echo 会显示一个空白行
echo -n 取消那个换行符
echo -e 'a\tb\tc\nd\te\tf' 结果 a b c
-e 启用反斜线控制字符的转换 d e f
\t \011 tab表格跳位键
\n \012 换行键
(⊙o⊙)… 结果与由预期不一致,选项-e也会显示出来……
\b 向左删除一位
问题:我在这里使用的选项参数好像都没有用,他们会被显示出来,就如同后面的所有字符是、都是参数一般
还有在后面所带的参数 双引号和单引号 好像都一样? 单引号 中的所有meta均关闭, 双引号中大部分关闭,有保留
escape:\ 反斜杠后面紧接的单一meta会被关闭
其次,在使用八进制和十六进制显示时 有些问题
例 A=B\ C
echo $A 结果:B C
echo '"$A"' 结果: "$A" 在单引号中,$将被关闭
echo "'$A'" 结果:'B C'
注意:①等号左右不能有空格②变量名称不能使用$、不能以数字开头③大小写有区别
替换、扩充
A=ls B=la echo $A -$B 结果:ls -la
A=B:C A=$A:D echo $A 结果:B:C:D :为区隔符号
A=BC A=${A}D 结果:BCD {}将变量名称的范围明确定义
export 设定变量是环境变量
unset 取消一个变量,该变量将会是不存在
上述两个命令都会根据 $a 的替换原则,设定或取消 替换后的结果
当定义了一个变量,给该变量赋空值时,局部定义不会有意义,该变量的结果还是为空值
当unset了这个变量,局部定义就有意义,该变量的值为局部定义的值
str=
var=${str=expr}
echo $var 结果:
echo $str 结果:
unset str
var=${str=expr}
echo $var 结果:expr
echo $str 结果:expr
echo "1" > file.out 将字符串输出到文件 file.out 中,
若file.out不存在,新建然后输入数据,若已经存在,则清空,然后输入数据
echo "2" >> file.out 将字符串附加在file.out 中,不存在新建,存在附加
《shell十三问》说的下面的命令, 反正我是没执行成功的,先写在这,以后再说
set -o noclobber 设定不能重写,即清空原有文件内容
echo "6" >| file.out 临时覆盖文件内容
set +o noclobber 取消设定