Bash 基于cammand输出/完成的Shell if语句
我在互联网上搜寻这个答案,但可惜找不到 在PHP中,我可以在if块中运行命令,如下所示Bash 基于cammand输出/完成的Shell if语句,bash,shell,Bash,Shell,我在互联网上搜寻这个答案,但可惜找不到 在PHP中,我可以在if块中运行命令,如下所示 if(command(blah)) {} else {} 因为每个函数将返回一个truthy/false值。我可以在shell脚本中执行同样的操作吗?我想根据命令是否正确运行来回显输出。即将举行的选举是: find . -type d -exec sudo chmod -R 775 {} \\; 我想输出它成功运行或失败,然后转到另一个命令 我可以将命令运行到变量或类似的东西中吗?Shell命令通常返回一
if(command(blah)) {} else {}
因为每个函数将返回一个truthy/false值。我可以在shell脚本中执行同样的操作吗?我想根据命令是否正确运行来回显输出。即将举行的选举是:
find . -type d -exec sudo chmod -R 775 {} \\;
我想输出它成功运行或失败,然后转到另一个命令
我可以将命令运行到变量或类似的东西中吗?Shell命令通常返回一个表示成功或失败的退出代码,
0
表示成功,其他任何东西表示某种错误(具体情况将取决于您运行的命令)
您可以在if语句中测试此退出代码:
if my_command; then
echo It worked.
fi
您还可以使用|
和&
运算符将命令链接在一起
my_command && echo It worked.
my_command || echo It failed.
您使用find
命令的具体示例有点棘手。chmod
命令可能失败,但find
命令仍将“成功”完成。类似这样的事情可能会有所帮助:
find . -type d -exec sudo sh -c 'chmod -R 775 {} || echo "FAILED {}"' \;
这将打印
FAILED ./path/to/directory
…对于任何失败的地方,您都可以检查输出。但我不确定这是否绝对必要。很少有命令会失败的情况:例如,在只读文件系统上,或者可能在NFS装载上。Shell命令通常返回一个退出代码,表示成功或失败,
0
表示成功,其他任何命令都表示某种错误(具体取决于您正在运行的命令)
您可以在if语句中测试此退出代码:
if my_command; then
echo It worked.
fi
您还可以使用|
和&
运算符将命令链接在一起
my_command && echo It worked.
my_command || echo It failed.
您使用find
命令的具体示例有点棘手。chmod
命令可能会失败,但find
命令仍将“成功”完成。类似这样的操作可能会有所帮助:
find . -type d -exec sudo sh -c 'chmod -R 775 {} || echo "FAILED {}"' \;
这将打印
FAILED ./path/to/directory
…对于任何失败的地方,您都可以检查输出。但我不确定这是否绝对必要。您的命令很少会失败:例如,在只读文件系统上,或者可能在NFS挂载上。我的目标是:
find . -type d|while read directory
do
chmod -R 755 ${directory}
if [ $? = 0 ];then
echo "successfully changed ${directory}
else
echo "Did not change ${directory}
fi
done
这会将其分解,更具可读性,您可以对每个命令进行测试。$?是用成功(0)或失败(1或更大)填充的变量。我的目标是:
find . -type d|while read directory
do
chmod -R 755 ${directory}
if [ $? = 0 ];then
echo "successfully changed ${directory}
else
echo "Did not change ${directory}
fi
done
这会将其分解,更具可读性,您可以对每个命令进行测试。$?是用成功(0)或失败(1或更大)填充的变量感谢您提供了一个非常简洁的答案!我将相应地修改我的命令和脚本。感谢您提供了一个非常简洁的答案!我将相应地修改我的命令和脚本。感谢您的回答。虽然也是正确的,但我选择了一个解释更简洁的答案。没问题,我的Python极客更喜欢可读性:)谢谢你的回答。虽然答案也是正确的,但我选择了更简洁的解释。没问题,我的Python极客更喜欢可读性:)