小编RKA*_*RKA的帖子

为什么在为 cd 编写包装器时需要使用 cd "$@" 而不是 cd "$1" ?

在其他地方,我看到了一个 cd 函数,如下所示:

cd()
{
 builtin cd "$@"
}
Run Code Online (Sandbox Code Playgroud)

为什么建议使用$@而不是$1

我创建了一个测试目录“r st”并调用了包含这个函数的脚本,它以任何一种方式工作

$ . cdtest.sh "r st"
Run Code Online (Sandbox Code Playgroud)

$ . cdtest.sh r st无论我使用"$@"还是失败"$1"

shell bash cd-command function arguments

25
推荐指数
3
解决办法
5223
查看次数

为什么 [ -n ] false 不像 [ -n "" ]?

我的问题是关于这段代码产生的返回值:

if [ -n ]; then echo "true"; else echo "false"; fi
Run Code Online (Sandbox Code Playgroud)

这打印true.

它的补充测试[ -z ]还使用打印true

if [ -z ]; then echo "true"; else  echo "false"; fi
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,为什么[ -n ]测试假设根本没有通过的字符串值,作为非空?

下面的代码打印false. 这是预期的,因为传递的字符串值为空且长度为零。

if [ -z ]; then echo "true"; else  echo "false"; fi
Run Code Online (Sandbox Code Playgroud)

bash

21
推荐指数
3
解决办法
1733
查看次数

$PATH 本身与 echo $PATH

当我$PATH像下面那样输入时,输出开始, -bash:然后是$PATHthen的值,最后它打印,: No such directory 而输出echo $PATH不产生该输出。
是否readline涉及bash ?

[user1@Server1 ~]$ $PATH
-bash: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin: No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我只做echo $PATH输出时:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin
Run Code Online (Sandbox Code Playgroud)

bash

10
推荐指数
2
解决办法
2万
查看次数

为什么回声?正在返回单个 | 字符到标准输出

我试图理解这个命令的输出 - echo ?。我看到的输出是单个|字符。

shell bash wildcards

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

标签 统计

bash ×4

shell ×2

arguments ×1

cd-command ×1

function ×1

wildcards ×1