我不明白:
之间的区别set youtube=’https://youtube.com’
和
youtube=’https://youtube.com’
使用第二个,我可以在命令的中间使用它,例如:
cygstart $youtube
这是有效的。
为什么以及如何与众不同?他们都设置变量?
而且,当我不使用“#34; set"我必须使用$扩展变量?
谢谢。
答案 0 :(得分:1)
这两个命令完全不相关; set youtube='https://youtube.com'
与$youtube
无关。它的作用是,它将$1
设置为整个字符串'youtube=https://youtube.com'
。
Per http://www.gnu.org/software/bash/manual/bashref.html#The-Set-Builtin,set
是一个内置的shell,有三个不同的目的:
set -C
告诉shell您不希望>
覆盖现有文件(而您希望命令失败,否则他们会这样做);并且set +C
告诉shell,从不介意,您现在希望>
能够再次覆盖文件。$1
和$2
等等,以及$@
和$*
)。由于set youtube='https://youtube.com'
只使用一个参数set
调用youtube=https://youtube.com
,因此可以将第一个位置参数($1
)设置为youtube=https://youtube.com
请注意,youtube='https://youtube.com'
是一种有点误导性的写youtube=https://youtube.com
方式;单引号在这里没有做任何事情(因为单引号的唯一目的是逃避空格和特殊字符,而https://youtube.com
没有任何这些)。