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
上一篇 下一篇

猜你喜欢

热点阅读