echo 输出有没有加"双引号"差别还是挺大的
2019-09-27 本文已影响0人
苍蝇的梦
2019-06-05 遇到的一点小问题
最近使用shell开发一个简单的后台,经常遇到echo输出时因为双引号有没有加上而导致输出内容不一致的问题,这边记录一下。
懒得写了,贴个例子;顺便再贴个刚好看到的文:在 Shell 中用 echo 输出变量丢失换行符的问题。
#!/bin/sh
function test(){
echo "==0========"
lsscsi -s
echo "==1========"
echo $(lsscsi -s)
echo "==2========"
echo "$(lsscsi -s)"
echo "==3========"
local disk=$(lsscsi -s)
echo $disk
echo "==4========"
echo ${disk}
echo "==5========"
echo "$disk"
echo "==6========"
echo "${disk}"
}
test
这边是运行后输出:
==0========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB
[1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB
[2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB
[3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==1========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB [1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB [2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB [3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==2========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB
[1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB
[2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB
[3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==3========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB [1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB [2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB [3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==4========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB [1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB [2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB [3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==5========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB
[1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB
[2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB
[3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
==6========
[0:0:0:0] disk ATA Crucial_CT275MX3 R040 /dev/sda 275GB
[1:0:0:0] disk ATA SanDisk SD9SN8W2 7000 /dev/sdb 256GB
[2:0:0:0] disk JMicron Generic 0425 /dev/sdc 1.00TB
[3:0:0:0] disk SMI USB DISK 1100 /dev/sdd 8.16GB
.
在使用方法传参时,有没有加双引号也是有区别的。
第一个是只有一个参数传入,第二个是有三个参数传入。
顺便记录一下
function test(){
echo ${1}=_=${2}=_=${3}
}
test "a b c"
# a b c=_==_=
test a b c
# a=_=b=_=c