使用" set"之间的区别而不是使用变量集?在Cygwin。

时间:2015-06-06 07:49:37

标签: variables cygwin environment-variables

我不明白:

之间的区别
set youtube=’https://youtube.com’

youtube=’https://youtube.com’

使用第二个,我可以在命令的中间使用它,例如:

cygstart $youtube 

这是有效的。

为什么以及如何与众不同?他们都设置变量?
而且,当我不使用“#34; set"我必须使用$扩展变量? 谢谢。

1 个答案:

答案 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-Builtinset是一个内置的shell,有三个不同的目的:

  1. 如果您没有给它任何选项或参数,它会打印出所有现有的shell变量和函数。
  2. 它有各种选项,可以让您更改shell的各种属性。例如,set -C告诉shell您不希望>覆盖现有文件(而您希望命令失败,否则他们会这样做);并且set +C告诉shell,从不介意,您现在希望>能够再次覆盖文件。
  3. 除选项之外的任何参数都会替换位置参数($1$2等等,以及$@$*)。
  4. 由于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没有任何这些)。