Linux:为局部变量设置命令

Sht*_*its 9 shell bash variable

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

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test
Run Code Online (Sandbox Code Playgroud)

请解释为什么echo $FILEM返回空字符串

Sté*_*las 21

你混淆bashcsh.

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

set FILEM="razrax"
Run Code Online (Sandbox Code Playgroud)

设置$1FILEM=razrax

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax
Run Code Online (Sandbox Code Playgroud)

在类 Bourne 的 shell 中变量赋值的语法是:

VAR=value
Run Code Online (Sandbox Code Playgroud)

( 的两边都不允许有空格=)。

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

set -A array value1 value2
Run Code Online (Sandbox Code Playgroud)

zsh, bash,yash和更新的版本ksh使用此语法:

array=(value1 value2)
Run Code Online (Sandbox Code Playgroud)

相反,在cshor 中tcsh,语法是:

set VAR = value
set array = (value1 value2)
Run Code Online (Sandbox Code Playgroud)

(周围的空格=可选)。

rc/es贝壳中:

VAR = value
array = (value1 value2)
Run Code Online (Sandbox Code Playgroud)

(周围的空格=可选)。