标签: set

在这个 Dockerfile 入口点中,“set --”有什么作用?

我试图了解这个Docker 入口点的作用

在我看来,这是编写 Dockerfile 时非常常见的模式,但我的 bash 技能有限,而且我不知道所有特殊的 bash 符号功夫。

此外,很难用谷歌搜索“--”、“$!” 等等。这些在 bash 世界中被称为什么?

总而言之,下面的行试图做什么?

if [ "${1#-}" != "$1" ]; then
  set -- haproxy "$@"
fi
Run Code Online (Sandbox Code Playgroud)

shell-script set

68
推荐指数
1
解决办法
4万
查看次数

“_=”是什么意思?

运行后set -a var=99,我可以在输出中找到一句话set

...
TERM=xterm
UID=0
USER=root
VIRTUAL_ENV_DISABLE_PROMPT=1
_=var=99
colors=/etc/DIR_COLORS
...
Run Code Online (Sandbox Code Playgroud)

谁能告诉我“_=”是什么意思?

我注意到这echo $var不会给任何东西。如果我运行set -a,则set不会再次包含此变量。怎么了?

environment-variables set

33
推荐指数
4
解决办法
1万
查看次数

没有参数的 set 命令有什么作用?

set没有参数的命令有什么作用?

正如我所看到的,它像env命令一样打印出我的环境变量,但按字母顺序排列。并进一步打印一些不同的信息(变量?函数?),例如:

__git_printf_supports_v=yes
__grub_script_check_program=grub-script-check
...
quote () 
{ 
    local quoted=${1//\'/\'\\\'\'};
    printf "'%s'" "$quoted"
}
quote_readline () 
{ 
    local quoted;
    _quote_readline_by_ref "$1" ret;
    printf %s "$ret"
}
Run Code Online (Sandbox Code Playgroud)

它是什么,它来自哪里?

我找不到有关set没有参数的命令的信息。实际上,我的 Linux 发行版中根本没有man页面set

bash set

27
推荐指数
3
解决办法
14万
查看次数

从脚本外部抑制 bash 执行跟踪 (set -x)

我试图找到这个问题的答案,但到目前为止没有运气:

我有一个运行其他一些脚本的脚本,其中许多其他脚本都包含“set -x”,这使得它们打印执行的每个命令。如果任何脚本将错误消息发送到 stderr,我想摆脱它但保留信息。

所以我不能简单地写 ./script 2>/dev/null

此外,我没有编辑其他脚本的权限,因此我无法手动更改设置选项。

我正在考虑将所有内容从 stderr 记录到单独的文件并过滤掉跟踪命令,但也许有更简单的方法?

shell bash set

17
推荐指数
2
解决办法
3674
查看次数

“( set -o posix ; set ) | less ”在做什么?

在我搜索列出所有 shell 变量的命令时,我以某种方式意识到,有一个命令可以列出所有环境变量,但不知何故,由于我不知道的原因,没有人列出所有 shell 变量。

但是,这里有人给出了如何显示所有变量、shell 和环境变量的答案。

( set -o posix ; set ) | less
Run Code Online (Sandbox Code Playgroud)

他其实并没有为外行解释这个表达是做什么的,我的零碎理解还不足以掌握它背后的想法。

这是我所知道的:

  • ( command1; command2)这会导致命令在 shell 的子进程内执行。
  • set是某种声明变量的方法,虽然不知道-o posix是什么意思以及为什么要连续执行第二个set

  • 命令 | 少这个不是问题,即使我理解它,它是一个寻呼机,可以更好地控制输出。

shell environment-variables subshell set

17
推荐指数
2
解决办法
4115
查看次数

`set -o keywords` 在 bash 上做什么?

bash shell 上的命令指定的“ keyword ”选项到底有什么作用set

选项:

set -o keyword

或者

set -k

一个简单的例子就足够我理解了。

bash set

9
推荐指数
1
解决办法
1万
查看次数

如何删除set命令显示的功能?

当 set 命令不带任何选项使用时,它会显示所有 shell 变量和函数的名称和值。

我们只想显示变量并避免输出中的函数。

shell bash set

8
推荐指数
1
解决办法
1709
查看次数

`set -x` 调试我的 `.zshrc`

当我用来set -x调试命令时,它会输出一些额外的行。

% set -x
+precmd_update_git_vars:1> [ -n '' ']'
+precmd_update_git_vars:1> [ '!' -n '' ']'
+precmd_update_git_vars:2> update_current_git_vars
+update_current_git_vars:1> unset __CURRENT_GIT_STATUS
+update_current_git_vars:3> [[ python == python ]]
+update_current_git_vars:4> _GIT_STATUS=+update_current_git_vars:4> python /home/ismail/zshfiles/gitstatus.py
+update_current_git_vars:4> _GIT_STATUS='' 
+update_current_git_vars:6> __CURRENT_GIT_STATUS=( '' ) 
+update_current_git_vars:7> GIT_BRANCH='' 
+update_current_git_vars:8> GIT_AHEAD='' 
+update_current_git_vars:9> GIT_BEHIND='' 
+update_current_git_vars:10> GIT_STAGED='' 
+update_current_git_vars:11> GIT_CONFLICTS='' 
+update_current_git_vars:12> GIT_CHANGED='' 
+update_current_git_vars:13> GIT_UNTRACKED='' 
+precmd_update_git_vars:3> unset __EXECUTED_GIT_COMMAND
Run Code Online (Sandbox Code Playgroud)

由于这些输出,我无法调试我的命令。

为什么set -x调试我的.zshrc?我set -x只想调试 后面的行set -x

command-line debugging zsh shell-script set

8
推荐指数
1
解决办法
6916
查看次数

bash shell中set命令的参数“i”是什么?

我通过键入 查找了 shell 内置命令集help set,简短的语法说明显示:

设置 [-abefhkmnptuvxBCHP] [-o 选项名称] [--] [arg ...]

帮助文档解释说,变量 $- 保存使用 set 命令设置的所有当前参数。

所以,我确实echo $-显示了 shell 的所有参数设置,我的是:

他BH

文档和上面的简短语法描述中提到了所有字母,但缺少一个:i选项。i setbash中的参数是什么意思?

bash shell-builtin set

7
推荐指数
1
解决办法
2750
查看次数

我可以取消设置 $1 变量吗?

是否可以取消设置 $1 变量?如果没有,我无法在man.

[root@centos2 ~]# set bon jour
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]# unset $1
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]#
Run Code Online (Sandbox Code Playgroud)

编辑:

最后,这是我在 man ( man set option double-dash) 中发现的清空所有位置参数的方法(并且 man 使用了“unset”这个词!):

如果此选项后面没有参数,则位置参数未设置。

[root@centos2 ~]# echo $1

[root@centos2 ~]# set bon jour
[root@centos2 ~]# echo $1$2
bonjour
[root@centos2 ~]# set --
[root@centos2 ~]# echo $1$2

[root@centos2 ~]#
Run Code Online (Sandbox Code Playgroud)

@Jeff Schaller 的回答帮助我理解了这一点。

bash variable set

7
推荐指数
3
解决办法
7131
查看次数