1. 如下执行结果:[liuqiang@slaves1 ~]$ aaaa=bbbb
[liuqiang@slaves1 ~]$ env |grep aaaa
[liuqiang@slaves1 ~]$ set |grep aaaa
aaaa=bbbb
[liuqiang@slaves1 ~]$ export aaaa
[liuqiang@slaves1 ~]$ env |grep aaaa
aaaa=bbbb
[liuqiang@slaves1 ~]$ unset aaaa
[liuqiang@slaves1 ~]$ set|grep aaaa
_=aaaa                                        // 请问这里是怎么回事?
[liuqiang@slaves1 ~]$ set|grep aaaa2. 如下执行结果
[liuqiang@node4 ~]$ test='* means all files' //使用单引号
[liuqiang@node4 ~]$ echo $test
1.txt iostat.sh test test1 means all files
[liuqiang@node4 ~]$ test="* means all files" //使用双引号
[liuqiang@node4 ~]$ echo $test
1.txt iostat.sh test test1 means all files请问: 变量定义后,在引用的时候,貌似之前变量存储是使用单引号还是双引号都没有区别,都是直接引用变量,请教别人给的解释是shell存储变量的时候是不存储引号的,不是很理解 
2.[ -d $1 ] 这种条件表达式,请问$1的参数从哪里输入呢?
感觉好像没有输入的参数列表啊~以上,谢谢`

解决方案 »

  1.   

    1、我也不太清楚,大概是等待重新定义变量的意思
    2、单双引号是为了方便定义带有空格的长变量,比如test= Hello world 是不行的,必须加上引号test='Hello world' ;还有双引号的作用可以引用变量,比如定义test1='$test ! welcome come to' ,echo $test1 输出的就是$test ! welcome come to ,定义test2="$test ! welcome come to"  ,echo $test2 输出的就是Hello world!welcome come to了。
    3、$1一般来说就是脚本后接的第一个参数,比如./test.sh   123   ,在脚本里$1=123。
      

  2.   

    单双引号主要是区分输出是引用变量,还是值的
    $ echo "$PATH"
    /sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    $ echo '$PATH'
    $PATH