Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从if条件中获取输出?_Linux_Bash_If Statement_Centos_Output - Fatal编程技术网

Linux 如何从if条件中获取输出?

Linux 如何从if条件中获取输出?,linux,bash,if-statement,centos,output,Linux,Bash,If Statement,Centos,Output,我不知道这个方法是否适用 #!/bin/bash file=$1 if [[ -x "$file" ]] then if [ $? = 0 ] then echo $file is executable else echo $file is not executable fi fi 但是如果我用一个不可执行的文件运行这个脚本,它不会返回任何结果 但是如果我用一个可执行文件运行这个脚本,它会返回“name is executable” 只是想知道位置参数的工作原理。我是初学者,但我能吗 将第

我不知道这个方法是否适用

#!/bin/bash
file=$1
if [[ -x "$file" ]]
then
if [ $? = 0 ]
then 
echo $file is executable
else
echo $file is not executable
fi
fi

但是如果我用一个不可执行的文件运行这个脚本,它不会返回任何结果 但是如果我用一个可执行文件运行这个脚本,它会返回“name is executable”


只是想知道位置参数的工作原理。我是初学者,但我能吗 将第一个if条件的输出转换为$


对于此类测试,您不需要内部if。此代码将完成以下工作:

#!/bin/bash
file=$1
if [[ -x "$file" ]]
 then
   echo $file is executable
 else
   echo $file is not executable
fi

您的第一个if已测试文件是否可执行。嵌套参数的用途是什么?只是想了解位置参数的工作原理。我是初学者。但是我可以将第一个if条件的输出转换成$?@BenjaminM。J:回答问题的第一部分:位置参数
1
存储在shell变量
文件中。因为这是脚本中唯一使用位置参数的地方,我不明白您还想知道什么。@BenjaminM.J:如果您使用不可执行文件运行脚本,
[[-x“$file”]
为false,并且您没有
else
部分。因此,您不需要打印任何内容,只需要了解位置参数的工作情况。我是初学者。但是我可以把第一个if条件的输出转换成$?@BenjaminM.J吗?你已经有了它(以不同的形式)。如果you exec
为真,则
如果you exec
为假,则
否则
@RomeoNinov:不清楚你在问什么。当然,任何
echo
命令都会清除
$?
,但我不明白为什么这里会出现问题。如果你真的需要美元?要保留,只需在打印文件后调用
false
。@user1934428,如您所见,我不需要任何东西。我提供答案!对不起,罗梅尼诺夫,我的评论本应该放在OP上的。我错了,在评论中输入了你的名字。但是,当我们这样做的时候:正如我所建议的,您确实向解决方案的else分支添加了一个
false
,这样OP就可以很高兴地验证
$?
之后仍然是相同的。