在其他地方,我看到了一个 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"
我的问题是关于这段代码产生的返回值:
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) 当我$PATH
像下面那样输入时,输出开始, -bash:
然后是$PATH
then的值,最后它打印,: 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) 我试图理解这个命令的输出 - echo ?
。我看到的输出是单个|
字符。