Pep*_*101 12 bash shell-script
我的ifbash 脚本中有一个必须检查这两个文件中的一个是否存在,如果它们不存在,它应该回显匹配。
我有代码:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Run Code Online (Sandbox Code Playgroud)
但这似乎出于某种原因不起作用。
我 110% 确定这两个文件不存在。我没有收到任何错误,只是没有输入if.
我是 bash 脚本的新手,所以我不确定可能出了什么问题。
bah*_*mat 15
如果你想要,那么你想要OR,而不是AND。
if [[ ! -f /etc/benchmarking/code ]] || [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Run Code Online (Sandbox Code Playgroud)
match当两者都不存在时,您的代码才会打印。但是,你说:
我 110% 确定这两个文件不存在。我没有收到任何错误,只是没有输入 if。
所以你的说法自相矛盾。如果您正在运行该代码,则至少必须存在其中一个文件。
如果您想查看if语句的评估方式,请使用-x.
#!/bin/bash -x
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Run Code Online (Sandbox Code Playgroud)
然后你会看到执行。
$ ./test.sh
+ [[ ! -f /etc/benchmarking/code ]]
+ [[ ! -f /etc/benchmarking/code.class ]]
+ echo match
match
$
Run Code Online (Sandbox Code Playgroud)
不应该是这样吗?A是一个文件或者B是一个文件,然后blabla。
if [[ -f /etc/benchmarking/code ]] || [[ -f /etc/benchmarking/code.class ]];
then
echo "match"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64554 次 |
| 最近记录: |