echo $-1
, echo $-2
, ..的输出是什么echo $-3
意思?
在我的一台 Linux 机器上,它向我显示:
echo $-1
imsBEl1
echo $-2
imsBEl2
在另一个 Linux 机器上,它显示:
echo $-1
himBH1
echo $-2
himBH2
它们映射到某些内存位置还是其他东西?
答案1
答案2
echo $-
打印当前 shell 的选项(不带-
前缀)。 1
和2
是额外的不相关标记。
答案3
添加米罗斯拉夫的答案:
echo $-
打印当前 shell 的选项(不带-
前缀)。 1 和 2 是额外的不相关标记。
这意味着这些选项分别适用于每台机器。
imsBEl
himBH
我研究了每个标志的含义并通过少量释义整理了以下含义。
-我
如果存在 -i 选项,则 shell 是交互式的。
-m
监控模式。作业控制已启用。
-B
shell 执行大括号扩展 (参见支撑扩展)。默认情况下此功能处于启用状态。
-s
如果存在 -s 选项,或者选项处理后没有剩余参数,则从标准输入读取命令。该选项允许在调用交互式 shell 时设置位置参数。
-E
错误跟踪
-l
使 bash 的行为就像它被作为登录 shell 调用一样
-H
哈歇尔
-H 历史扩展
默认情况下,交互式 shell 会启用此功能。
答案4
要扩展现有答案,请尝试echo "${-1}"
-echo "${-2}"
您将得到“错误替换”错误因为连字符不是用作-1
变量名而是用于替换一个值如果变量名在它之前未定义。例如:
$ unset foo
$ echo "${foo-bar}"
bar
$ foo=test
$ echo "${foo-bar}"
test