bash - 命令替换不适用于 Bash 中的“test”或“[”或“[[”
问题描述
我一直在尝试使用命令替换将测试命令的结果(0 或 1)分配给变量,但它似乎不起作用。是否有一个原因?
假设我的工作目录中有一个文件 random_file.txt ,我测试它是否存在
test -a random_file.txt
echo $?
输出为 0,这是预期的。
然后我尝试使用命令替换将结果分配给变量 test_result,
test_result=$(test -a random_file.txt)
echo $test_result
输出为空。
同样,当我尝试使用 [[ 或 [,它也不会像我预期的那样工作。
解决方案
test
不向标准输出写入任何内容,这是命令替换捕获的内容。相反,它设置$?
.
test -a random_file.txt
test_result=$?
使用[
( 的另一个名称test
) or[[
是相同的:
[ -a random_file.txt ]
test_result=$?
[[ -a random_file.txt ]]
test_result=$?
推荐阅读
- android - 仿真器:仿真器:错误:x86 仿真当前需要硬件加速!模拟器:进程以退出代码 1 结束
- android - EndPoint 改造 URL 缺少斜杠
- php - 使用 PHP 和 MYSQL 连续添加同名的新列
- powershell - 连接动态变量
- android - 在 Android Studio 中导入库的问题
- ios - 如何在 RootViewController Swift 中匹配密码
- oracle-apex - 单击编辑链接时将记录插入表中 Apex
- firebase - 升级到 firebase-admin 5.13.0 后出现“PERMISSION_DENIED:权限缺失或不足”
- windows - 如何列出进程曾经加载的所有 DLL,甚至是在我开始监视进程之前加载和卸载的 DLL
- javascript - 编译应用程序时,Electron 不显示未存储的图像