Linux:为局部变量设置命令


9

我正在尝试了解本地/环境变量和导出/设置命令。

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

请说明为什么echo $FILEM返回空字符串

Answers:


21

你混淆bash使用csh

bash像在任何类似Bourne壳,set是命令选项(壳配置设置喜欢-f-C-o noclobber...)和位置参数($1$2...)。

set FILEM="razrax"

设置$1FILEM=razrax

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

在类似Bourne的shell中,变量分配的语法为:

VAR=value

(的任一侧都不允许有空格=)。

ksh其他一些类似Bourne的shell(mksh,pdksh,zsh)也可以通过以下方式分配数组变量set

set -A array value1 value2

zshbashyash和新版本ksh这个语法,而不是使用:

array=(value1 value2)

相反,在csh或中tcsh,语法为:

set VAR = value
set array = (value1 value2)

=可选的空格)。

rc/ es壳中:

VAR = value
array = (value1 value2)

=可选的空格)。


谢谢您的答复。我唯一不了解的是benweet选项和局部变量“ set是设置选项的命令”有什么区别?
iJava

@iJava,set -C设置-C选项(与相同set -o noclobber)。set foo受让人foo$1(和$#为1,( $2$3是未设置如果先前设置))。有关详细信息,请查阅您的Shell手册。
斯特凡Chazelas

1
我不知道有哪些选择。这些选项是否发送到像main(String [] args)这样的程序?要不然是啥?它们在哪里使用?
iJava

1
@iJava,它们是影响Shell行为的设置。再次,RTFM
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.